由於在項目中經常使用 js,而 for 循環又是經常使用。現在整理一下,方便在開發的時候選擇合適的方法。
爲了更好的描述問題,先準備一個數組和一個對象類型數據,後面的代碼均用這兩個變量演示。
const arr = ["a", "b", "c", "d","e"];
const obj = {
id: 234,
name: "foo",
account: "bar"
};
這種是遍歷索引的方式,適用於數組。
for (let i = 0;i < arr.length;++i) {
console.log(arr[i]);
}
這種形式獲取數組的索引或對象的鍵,然後根據這個在獲取對應位置的值。
for (const x in arr) {
console.log(x, "-", arr[x]);
}
for (const x in obj) {
console.log(x, "-", obj[x]);
}
此種循環遍歷可迭代對象,獲得的是對應的值,要獲得索引需要用 entries 方法。
for (const x of arr) {
console.log(x);
}
for (const [i, x] of arr.entries()) {
console.log(i, "-", x);
}
函數式遍歷可迭代對象
arr.forEach((v, i) => {
console.log(i, "-", v);
});
遍歷對象的鍵返回數組。
for (let k of Object.keys(obj)) {
console.log(k, '-', obj[k]);
}
遍歷對象的值,返回值對應的數組。
for (let v of Object.values(obj)) {
console.log(v);
}
遍歷對象鍵值對,返回數組。
for (let [k, v] of Object.entries(obj)) {
console.log(k, "-", v);
}