首页 > 技术文章 > 数组遍历的几种方法

zhangxiaoqiong 2020-09-17 14:25 原文

// 数组遍历
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let res = [];
let obj = [{ 12: "a" }, { 23: "b" }];

for (let i = 0; i < arr.length; i++) {
  res.push(arr[i]);
  console.log(i, arr[i]);
}

for (let i = 0; i < obj.length; i++) {
  console.log(i, obj[i]);
}

for (let item of arr) {
  console.log(item);
}
for (let item of obj) {
  console.log(item);
}

// 方法对数组的每个元素执行一次给定的函数。
arr.forEach((item, index, array) => {
  console.log(item, index, arr[index]);
});
obj.forEach((item, index, array) => {
  console.log(item, index, obj[index]);
});

// 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
let res_map = arr.map(function (item, index, arr) {
  return item * 10;
});

let _obj = [{ id: 2 }, { id: 1 }];
let _map = _obj.map(function (item, index, arr) {
  return item.id > 1;
});

//  方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
let res_filter = arr.filter(function (item) {
  return item * 2 > 2;
});

// 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
// 注意:若收到一个空数组,此方法在一切情况下都会返回 true。
let res_every = arr.every(function (item) {
  return item < 9;
});

// 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
// 注意:如果用一个空数组进行测试,在任何情况下它返回的都是false。
let res_some = arr.some(function (item, index, array) {
  return item > 9;
});

// 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
let res_reduce = arr.reduce(function (
  Accumulator,
  CurrentValue,
  CurrentIndex,
  SourceArray
) {
  return Accumulator + CurrentValue;
});

// 方法接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
let res_reduceRight = arr.reduceRight(function (
  accumulator,
  currentValue,
  index,
  array
) {
  // return accumulator.concat(currentValue);
});

// 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined
let res_find = arr.find((element) => element > 0);

// 方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。
let res_findIndex = arr.findIndex((element) => element == 4);

// keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。
for (let index of arr.keys()) {
  console.log(index);
}
// values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值
for (let elem of arr.values()) {
  console.log(elem);
}
// entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对
for (let [index, elem] of arr.entries()) {
  console.log(index, elem);
}

 

推荐阅读