ES6でJavaScriptオブジェクトをループしようとしています。
for (let [value, index] of object) {
do something with rest
if (index >= 1) {
// do something with first item
}
}
インデックスを使用して最初のアイテムを取得しようとすると、コンソールにエラーが返されますが、正常に機能します。
Uncaught TypeError: Invalid attempt to destructure non-iterable instance
インデックスを持つオブジェクトをループする方法に関するアイデアはありますか?ありがとう
これはjonas wのソリューションへの追加であることを意味します。
現在の値のキーが必要な場合:
const object = {a:2, b:4, c:6, d:8};
for (const [index, [key, value]] of Object.entries(Object.entries(object))) {
console.log(`${index}: ${key} = ${value}`);
}
Object.entries(object).forEach(([key, value], index) => {
console.log(`${index}: ${key} = ${value}`);
});
もちろん、いつでもkey
を省略できます。
const object = {a:2, b:4, c:6, d:8};
for (const [index, [, value]] of Object.entries(Object.entries(object))) {
console.log(`${index}: ${value}`);
}
Object.entries(object).forEach(([, value], index) => {
console.log(`${index}: ${value}`);
});
単にインデックスを数える:
let index = 0;
for (let value of object) {
//do something with rest
if (index >= 1) {
// do something with the third and following items
}
index++;
}
または、オブジェクトの構造化を使用したい場合(理由はわかりません)は、もう少し複雑です。
let entries = Object.entries(object);
for(let [index, [key, value]] of entries.entries()){
//...
}
または:
for(let [index,value] of Object.values(object).entries()){
//...
}
しかし、なぜあなたが単純なforEachを使わないのか分かりませんか?:
Object.values(obj).forEach((value, index)=> /*...*/);