当前位置: 代码迷 >> 综合 >> js的数组方法总结;map,foreach,filter,reduce
  详细解决方案

js的数组方法总结;map,foreach,filter,reduce

热度:89   发布时间:2023-11-19 17:31:32.0

处理数组经常用到的方法;

  • array.every

every()方法测试数组的所有元素是否都通过了指定函数的测试。
只会返回true和false,可用于数组判断;

function isBigEnough(element, index, array) { return element >= 10; 
} [12, 5, 8, 130, 44].every(isBigEnough);   // false 
[12, 54, 18, 130, 44].every(isBigEnough); // true
//也可以箭头函数
[12, 5, 8, 130, 44].every((item)=> item>10); //false
  • array.map

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回

var numbers = [1, 5, 10, 15];
var doubles = numbers.map(function(x) {return x * 2;
});
// doubles is now [2, 10, 20, 30]
// numbers is still [1, 5, 10, 15]var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots is now [1, 2, 3]
// numbers is still [1, 4, 9]
//主要是生成了一个新数组,需要用变量来接收;var new_array = arr.map(function callback(currentValue, index, array) {// Return element for new_array
}[, thisArg])
  • array.forEach
var a = ['a', 'b', 'c'];a.forEach(function(element) {console.log(element);
});

如果对数组项做修改,那么原数组改变

let arr1 = [{id:1,name:'a1'},{id:2,name:'a2'},{id:3,name:'a3'}];
arr1.forEach(item => {item.id += 1});
console(arr1);0: {id: 2, name: "a1"}
1: {id: 3, name: "a2"}
2: {id: 4, name: "a3"}//用法:
arr.forEach(function callback(currentValue, index, array) {//your iterator
}[, thisArg]);
array.slice

slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。原始数组不会被修改。

var a = ['zero', 'one', 'two', 'three'];
var sliced = a.slice(1, 3);console.log(a);      // ['zero', 'one', 'two', 'three']
console.log(sliced); // ['one', 'two']
语法:
arr.slice()
arr.slice(begin)
arr.slice(begin, end)
array.filter

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
可用于数组和数组对象的筛选;需要用新数组来接收;

var words = ["spray", "limit", "elite", "exuberant", "destruction", "present"];var longWords = words.filter(word => word.length > 6);

语法:

var newArray = arr.filter(callback[, thisArg])element正在数组中处理的当前元素。index数组中正在处理的元素的索引。array数组filter被调用。thisArg Optional可选的。this执行时使用的值callback。
  • array.some

some() 方法测试数组中的某些元素是否通过由提供的函数实现的测试。与every的区别在于,every必须所有元素都符合条件,才会返回true;some是有任一元素满足条件都会返回true;

function isBiggerThan10(element, index, array) {return element > 10;
}[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true
es6:
[12, 5, 8, 1, 4].some(item => item>10);//true
只是简单的总结下使用方法,更多的关于这些方法的使用技巧,还在探索,诸位加油。
  相关解决方案