对元素组的
1. find() : 该方法主要应用于查找第一个
符合条件的数组元素,即返回通过测试(函数内判断)的数组的第一个元素的值 它的参数是一个回调函数,为数组中的每个元素都调用一次函数执行。在回调函数中可以写你要查找元素的条件,当条件成立为true
时,返回该元素,之后的值不会
再调用执行函数。如果没有
符合条件的元素,返回值为undefined
find(item => {})
2.map()
2.1 循环数组 方法返回一个新数组数组中的元素为原始数组元素调用函数处理后的值
2.2方法按照原始数组元素顺序依次处理元素。
2.3返回值是一个函数 函数内有三个形参 (当前元素的值(必填),当前元素的索引值(选填),当前元素属于的数组对象(选填))
2.4处理完数组所得到的值 需啊哟使用 return进行返回出去 并返回一个新的数组(mao是一个数组方法)
3.reduce(): 计算数组元素相加后的总和
3.1reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
3.2reduce() 可以作为一个高阶函数,用于函数的 compose
var numbers = [65, 44, 12, 4]; // 定义一个数组
function getSum(total, num) { // 定义一个函数 当做计算函数
return total + num;
}
console.log(numbers.reduce(getSum)) // 数组.reduce(计算函数)
我们来列举几个使用场景的例子(他的使用是很灵活的)
适用场景1:累加
let a = [1,2,3,4].reduce((total, value, index, arr) => {
return total + value;
}, 0);
console.log(a) // 10
// 或者
// 其实这里的 x 就是上面的 total,只是参数名字换了一下
let a = [1,2,3,4].reduce(function(x, y) {
return x + y;
});
适用场景2:数组处理
// 如:获取年龄大于18岁人的名字
const persons = [
{name: 'lbd', age: 22},
{name: 'fk', age: 17},
{name: 'smy', age: 20}
]
let names = persons.reduce((names, person) => {
if (person.age > 18) {
names.push(person.name)
}
return names;
}, []);
console.log(names) // ['lbd', 'fk']
适用场景3:将数组转化为对象
const arr = [
{id: '1', name: 'lbd'},
{id: '2', name: 'smy'},
{id: '3', name: 'fk'}
]
let obj = arr.reduce((acc, current) => {
return {...acc, [current.id]: current};
}, {})
console.log(obj)
// {
// 1: {id: '1', name: 'Jim'},
// 2: {id: '2', name: 'Lily'},
// 3: {id: '3', name: 'Allen'}
适用场景4:获取数组中的最大值
let arr = [22, 19, 50, 7, 15];
let max = arr.reduce(function(x, y) {
return x > y ? x : y;
}); // 50
1. 连接: arr.join("连接符") 如果 参数为 '' 则就是链接把数组拼接起来
2. 拼接:arr.concat("a","b",[arr1[arr2]]) 向数组内添加 值 可以 数组中在套数组 可以无限套娃
3. 截取:arr.slice(start[,end]) 会修改原数组,返回新的子数组 含头不含尾 省略第二个参数表示从start位置开始一直截取到末尾 支持负数,表示倒数第几个 (注意 参数中的[ ] 表示选填)
4.删除、插入、替换:arr.splice(start, deleteCount [,value1,value2...]) 直接修改原数组 返回所有被删除元素组成的子数组 如果 deleteCount 是 0,表示插入元素,插入的元素会排在 start 处元素之前 如果是删除,从 start 开始,并包含 start 处的元素。
5.翻转数组:arr.reverse() 直接修改原数组 默认按照数组元素第一位的ASCII码从小到大排列 可以设置下列的比较器函数来控制升序,降序或者打乱
arr.sort(function(a,b){return a-b;}); // 升序(只限数组中是数字或者数字字符串)。
arr.sort(function(a,b){return b-a;}); // 降序(只限数组中是数字或者数字字符串)。
arr.sort(function(){return Math.random()>.5 ? 1 : -1;}); // 随机打乱数组(数组中可以是任何数据类型)
6. 查找:arr.indexOf(value[,from])或arr.lastIndexOf(value[,from]) 返回value在数组中的位置,没有找到返回-1。
7. 数组转字符串:String(arr)或arr.toString() 将数组中的元素用逗号连接成字符串,类似于arr.join(",")
8. 开头入栈:arr.unshift(value1, value2......) 在数组的最开头插入元素 修改原数组 返回新数组的length。
9. 开头出栈:arr.shift() 弹出数组最开头的元素 修改原数组 返回被弹出的元素。
10. 结尾入栈:arr.push(value1[,value2,arr1]) 在数组末尾追加元素。
11. 结尾出栈:arr.pop() 弹出数组最末尾的元素 修改原数组 返回被弹出的元素。