js遍历数组和对象的常用方法有哪些?
在JavaScript中,遍历数组和对象是常见且基础的操作。下面列出了一些常用的方法来遍历数组和对象:
for
循环javascriptCopy Code
let arr = [1, 2, 3, 4, 5]; for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }
for...of
循环javascriptCopy Code
let arr = [1, 2, 3, 4, 5]; for (let value of arr) { console.log(value); }
forEach
方法javascriptCopy Code
let arr = [1, 2, 3, 4, 5]; arr.forEach(function(value) { console.log(value); });
for...in
循环(不推荐用于数组,因为这会遍历数组的索引)javascriptCopy Code
let arr = [1, 2, 3, 4, 5]; for (let index in arr) { console.log(arr[index]); }
注意:
for...in
主要用于遍历对象的属性,虽然也可以用于数组,但不推荐这样做,因为它会遍历数组的所有可枚举属性,包括原型链上的属性。
map
方法(创建一个新数组,其中包含对原数组元素调用函数后的结果)javascriptCopy Code
let arr = [1, 2, 3, 4, 5]; let newArr = arr.map(function(value) { return value * 2; }); console.log(newArr); // [2, 4, 6, 8, 10]
filter
方法(创建一个新数组,包含通过所提供函数实现的测试的所有元素)javascriptCopy Code
let arr = [1, 2, 3, 4, 5]; let filteredArr = arr.filter(function(value) { return value > 2; }); console.log(filteredArr); // [3, 4, 5]
遍历对象
for...in
循环(用于遍历对象的属性)javascriptCopy Code
let obj = {a: 1, b: 2, c: 3}; for (let key in obj) { console.log(key, obj[key]); }
Object.keys
或Object.values
或Object.entries
(返回对象键、值或键值对数组)javascriptCopy Code
let obj = {a: 1, b: 2, c: 3}; // Keys Object.keys(obj).forEach(key => console.log(key)); // "a", "b", "c" // Values Object.values(obj).forEach(value => console.log(value)); // 1, 2, 3 // Entries (key-value pairs) Object.entries(obj).forEach(([key, value]) => console.log(key, value)); // "a" 1, "b" 2, "c" 3
for...of
与Object.entries
(结合使用)javascriptCopy Code
let obj = {a: 1, b: 2, c: 3}; for (let [key, value] of Object.entries(obj)) { console.log(key, value); // "a" 1, "b" 2, "c" 3 }
Object.getOwnPropertyNames
(返回对象自身的所有属性名,不包括继承的属性)javascriptCopy Code
let obj = {a: 1, b: 2}; Object.getOwnPropertyNames(obj).forEach(key => console.log(key)); // "a", "b"
选择合适的方法取决于你的具体需求,例如是否需要修改原数组、是否需要返回新数组、是否需要处理对象属性等。通常,对于现代JavaScript开发,推荐使用for...of
、`forEach