js数组奇巧淫技:参考: https://juejin.cn/post/6844904194919366669
join 用于分隔字符串
push() 用于对数组进行增加(最后面增加)
unshift() 用于对数组进行增加(最前面增加)
shift() 用于对数组进行删除(删除最后面)
pop() 用于对数组进行删除(删除最前面)
sort () 用于比较大小
reverse () (12用于倒叙数组
concat () 用于多个数组合并
slice () 用于数组的切割
splice() 可以对数组进行增、删、改.返回被增加,删除或修改的元素 会改变原数组
indexOf()和 lastIndexOf() (ES5新增)用于查找 某个字符在没在数组里面
forEach() (ES5新增) 对数组进行遍历循环,对数组中的每一项运行给定的函数.这个方法没有返回值
map() (ES5新增) 映射,对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组
filter() (ES5新增)一般用于过滤
every() (ES5新增)一般用于判断 只有满足全部条件就会返回 true 否则返回 false
some() (ES5新增)一般用于判断 只有满足一个条件就会返回 true 否则返回 false
reduce()和 reduceRight() (ES5新增)
ES5:
join & split
const colors = 'green, red, black';
const colorsArr = colors.split(',');
console.log(colorsArr); // [ 'green', ' red', ' black' ]
const colorsStr = colorsArr.join(',');
console.log(colorsStr); // green, red, black
push & pop
const colors = [];
colors.push('green', 'red');
console.log(colors); // ['green', 'red']
const item = colors.pop();
console.log(item); // 'red'
console.log(colors); // ['green']
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
shift & unshift
const colors = ['green', 'red'];
const item = colors.shift();
console.log(item); // 'green'
console.log(colors); // ['red']
colors.unshift('blue', 'grey');
console.log(colors); // ['blue', 'grey', 'red']
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
reverse & sort
const values = [1, 3, 44, 43, 654, 0];
values.reverse();
console.log(values); // [ 0, 654, 43, 44, 3, 1 ]
values.sort();
console.log(values); // [ 0, 1, 3, 43, 44, 654 ] 首字母开始比较
values.sort((val1, val2) => val2 - val1);
console.log(values); // [ 654, 44, 43, 3, 1, 0 ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
concat, slice & splice
const colors = ['red', 'green', 'blue'];
const colors2 = colors.concat('yellow', ['black']);
console.log(colors2); // [ 'red', 'green', 'blue', 'yellow', 'black' ]
const colors3 = colors2.slice(1, 5);
console.log(colors3); // [ 'green', 'blue', 'yellow', 'black' ]
console.log(colors2); // [ 'red', 'green', 'blue', 'yellow', 'black' ]
const remove1 = colors2.splice(0, 1);
console.log(remove1); // [ 'red' ]
console.log(colors2); // [ 'green', 'blue', 'yellow', 'black' ]
const remove2 = colors2.splice(1, 0, 'red', 'pink');
console.log(remove2); // [ ]
console.log(colors2); // [ 'green', 'red', 'pink', 'blue', 'yellow', 'black' ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
indexOf & lastIndexOf
const values= [1, 3, 4, 6, 7, 4, 3, 1];
console.log(values.indexOf(4)); // 2
console.log(values.lastIndexOf(4)); // 5
console.log(values.lastIndexOf(4, 4)); // 2
console.log(values.lastIndexOf(4, 5)); // 5
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
every, filter, forEach, map & some
every & some
const values = [1, 3, 4, 6, 7, 4, 3, 1];
const everyResult = values.every((item, index, array) => {
return item > 2;
});
console.log(everyResult); // false
const someResult = values.some((item, index, array) => {
return item > 2;
});
console.log(someResult); // true
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
filter
let aa = [1,2,3,4,5,6,7];
let cc = [];
cc = aa.filter((item,index) => {
return item > 3
})
console.log(cc); // [4,5,6,7]
const obj = [ { num: 3 }, { num: 4 }, { num: 1 },{ num: 5 },{ num: 0 }, { num: 4 }];
const filterObjResult = obj.filter((item, index, array) => {
return item.num > 2;
});
console.log(filterObjResult); // [ { num: 3 }, { num: 4 }, { num: 5 }, { num: 4 } ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
map
let values = [1,3,5,6,7,3,1];
let mapResult = values.map((item, index, array) => {
return item * 2
})
console.log(mapResult); //[2,6,10,12,14,6,2]
const obj = [ { num: 3 }, { num: 4 }, { num: 1 },{ num: 5 },{ num: 0 }, { num: 4 }];
const mapObjResult = obj.map((item, index, array) => {
return item.num;
});
console.log(mapObjResult); // [ 3, 4, 1, 5, 0, 4 ]
forEach
const values = [1, 3, 4, 6, 7, 4, 3, 1];
values.forEach((item, index, array) => {
array[index] = item * 2;
});
console.log(values); // [ 2, 6, 8, 12, 14, 8, 6, 2 ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
reduce & reduceRight
const values = [1, 3, 4, 4, 4, 9];
const sum = values.reduce((prev, cur, index, array) => {
return prev + cur;
});
console.log(sum); // 25
const sumRight = values.reduceRight((prev, cur, index, array) => {
return prev + cur;
});
console.log(sumRight); // 25
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ES6
拓展运算符…
const colors = ['green', 'red', 'pink'];
const colors1 = ['white', 'grey'];
const colors2 = [...colors, ...colors1];
console.log(colors2); // [ 'green', 'red', 'pink', 'white', 'grey' ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
const obj = {
'0': '123',
'1': '456',
'2': 'c',
length: 4
}
const arr = Array.from(obj);
console.log(arr); // [ '123', '456', 'c', undefined ]
const values = [1, 1, 3, 5];
const setValue = new Set(values);
const newArr = Array.from(setValue); // 也可以直接[...new Set(values)]
console.log(newArr); // [ 1, 3, 5 ]
const newArr2 = Array.from(newArr, x => x * 2);
console.log(newArr2); // [ 2, 6, 10 ]
console.log(Array.of(undefined, 1, null)); // [ undefined, 1, null ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
fill
const colors = ['green', 'red', 'pink'];
const colors1 = colors.fill('white');
console.log(colors1); // [ 'white', 'white', 'white' ]
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
find & findIndex
const values = [1, 3, 4, 5, 6, NaN];
const findResult = values.find(num => num > 4 ); // 找不到为undefined
console.log(findResult); // 5
const findIndexResult = values.findIndex(num => num > 4 ); // 找不到为-1
console.log(findIndexResult); // 3
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
entries(), keys() & values()
const colors = ["red", "green", "blue"];
for (const index of colors.keys()) {
console.log(index); // 0 1 2
}
for (const ele of colors.values()) {
console.log(ele); // red green blue
}
for (const [index, ele] of colors.entries()) {
console.log(index, ele);
}
// 0 red
// 1 green
// 2 blue
作者:tonytony
链接:https://juejin.cn/post/6844903925775237127
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ES7
includes
第二个参数是搜索的起始位置
const values = [1, 3, 4, 5, 6, NaN];
console.log(values.includes(NaN)); // true
console.log(values.includes(4, 3)); // false
参考资料
- 阮一峰 ECMAScript 6 入门
- JavaScript高级程序设计(第三版)
- 本文参考了这位大神的 : 链接
1.Array.isArray()
用来判断是否为数组, 可以弥补 typeof 运算的不足
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
var arrObj = {};
console.log(Array.isArray(arr));//true
console.log(Array.isArray(arrObj));//false
2.valueOf()
返回数组的原始值 (一般情况下其实就是数组自身)
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
console.log(arr.valueOf());//[1, 3, 5, "xiaoming", "liuqiao"];
//判断返回的是数组自身
console.log(arr.valueOf()===arr) //true
3.toString()
返回数组的字符串形式
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
console.log(arr.toString());//1,3,5,xiaoming,liuqiao
4.indexOf()
返回指定元素在数组中第一次出现的位置,没有返回-1
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
console.log(arr.indexOf('xiaoming'));//返回索引 3
- lastIndexOf()
返回指定元素在数组中最后出现的位置,没有返回-1
var arr = [1, 3, 5, "xiaoming", "liuqiao",'xiaoming'];
console.log(arr.lastIndexOf('xiaoming'));//返回索引 5
6.push()
用于在数组的末端添加一个或多个元素,并返回添加元素后的数组长度, 会改变元素原数组
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
console.log(arr.push('xiaohong', 'xiaobai')); //返回数组长度7
console.log(arr);// [1, 3, 5, "xiaoming", "liuqiao", "xiaohong", "xiaobai"]
7.pop()
用于删除数组的最后一个元素,并返回该元素,会改变原数组
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
console.log(arr.pop('liuqiao'))//liuqiao
console.log(arr);// [1, 3, 5, "xiaoming"]
8.join()
以某字符串参数为分隔符,将数组所有元素,组成字符串并返回,若没有传参,则以默认以逗号分隔
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
console.log(arr.join('-'));//1-3-5-xiaoming-liuqiao
console.log(arr.join());//1,3,5,xiaoming,liuqiao
8.split()
const colors = 'green, red, black';
const colorsArr = colors.split(',');
console.log(colorsArr) ; //['green','red', 'black']
9.concat()
用于多个数组的合并,将新数组的元素,添加到原数组元素的后面,返回一个新数组, 原数组不变
var arr = [1, 3, 5, "xiaoming", "liuqiao"];
var newArr = ['xiaohong', 'xiaobai']
console.log(arr.concat(newArr));//[1, 3, 5, "xiaoming",
console.log(arr);//[1, 3, 5, "xiaoming", "liuqiao"];
----------------------------------分隔符-----------------------------------
//多个数组合并
var newArr = ['xiaohong']
var newArr2 = [2];
var newArr3= [6];
console.log(arr.concat(newArr,newArr2,newArr3));//[1, 3, 5, "xiaoming", "liuqiao", "xiaohong",2,6]
10.shift()
用于删除数组的第一个元素,并返回该元素.会改变原数组
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.shift());//xiaoming
console.log(arr);//[3, 5, 1, "liuqiao"]
11.unshift()
用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度.会改变原数组
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.unshift('abc'));//6
console.log(arr);//["abc", "xiaoming", 3, 5, 1, "liuqiao"]
12.reverse()
用于倒置数组中的元素顺序,返回改变后的数组.会改变原数组
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.reverse());//["liuqiao", 1, 5, 3, "xiaoming"]
console.log(arr);//["liuqiao", 1, 5, 3, "xiaoming"]
13.slice()
从数组中拷贝一部分,返回新数组
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
//包含索引为1的元素,不包含索引为3的元素(拷贝索引为 1 2 的元素)
console.log(arr.slice(1,3));//[3, 5]
console.log(arr);//["xiaoming", 3, 5, 1, "liuqiao"];
14.splice()
可以对数组进行增、删、改.返回被增加,删除或修改的元素 会改变原数组
--------------->>>>
!!删除:splice一个参数时:被删除的起始索引, 直到末尾全部删除,返回被删除的项
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.splice(2));//[5, 1, "liuqiao"]
console.log(arr); //["xiaoming", 3]
--------------->>>>
!!删除: splice 两个参数时:第一个参数是被删除的起始索引,第二个参数是要删除的项数 返回被删除的项
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.splice(0,2));//["xiaoming", 3]
console.log(arr); //[5, 1, "liuqiao"]
--------------->>>>>
!!添加: splice:三个参数时:第一个起始位置索引(也就是在哪个地方添加),第二个参数是0,第三个参数是插入的项.返回空数组
//通俗点来说就是:在哪个地方,添加哪几项
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.splice(1, 0, 'xiaofang'));//[]
console.log(arr); //["xiaoming", "xiaofang", 3, 5, 1, "liuqiao"]
---------------->>>>
!!替换:splice:向数组指定位置插入任意项元素,同时删除任意数量的项
三个参数:第一个参数:起始索引位置,第二个参数:删除的项数,第三个参数:插入任意数量的项
返回被删除的项
var arr = ["xiaoming", 3, 5, 1, "liuqiao"];
console.log(arr.splice(1, 2, 'xiaofang','xiaohong'));//[3,5]
console.log(arr);//["xiaoming", "xiaofang", "xiaohong", 1, "liuqiao"]
15.sort()
将数组进行排序,返回数组 默认按照字符编码排序(默认为升序) 会改变原数组
------------>>>>>
sort排序是针对字符的排序,先使用数组的toString()方法转为字符串,再逐位笔记,3 是大于12的,因为收尾3>1,所以尽量不要使用Number类型的数据进行排序
比较字符串的时候,首位的英文字母通过ASCII码可以转为相应的数值,再根据数值比较
var arr = ["xiaoming", 3, 5, 1, 12,"liuqiao"];
console.log(arr.sort());//["xiaoming", 3, 5, 1, 12,"liuqiao"];
console.log(arr);//["xiaoming", 3, 5, 1, 12,"liuqiao"];
------------->>>>
数组排序方法,需要自己定义回调函数 sort([fn]),返回数组
升序,只能对数值排序
var arr = [3, 5, 1, 12];
//升序,只能对数值排序
arr.sort(function (a, b) {
return a - b;
});
console.log(arr);//[1, 3, 5, 12]
--------------->>>>
降序,只能对数值排序
var arr = [3, 5, 1, 12];
//降序,只能对数值排序
arr.sort(function (a, b) {
return b - a;
});
console.log(arr);//[12, 5, 3, 1]
--------------->>>>
自定义排序函数 升序
var arr = [3, 5, 1, 12];
arr.sort(function (a, b) {//升序
if (a > b) {
return 1;
}
if (a < b) {
return -1;
}
return 0;
});
console.log(arr);//[1, 3, 5, 12]
16.some()
判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true
array.some(callback(value,index,self))
some()接收一个回调函数作为参数,这个回调函数需要有返回值,callback(value,index,self)有是三个参数
var arr = ["xiaoming", 3, 5, 1, 12, "liuqiao"];
//相当于循环遍历
var bol = arr.some(function (value, index, self) {
console.log(value);//遍历的值
console.log(index);//索引
console.log(self);//self表示自身
return value == 3;
});
console.log(bol);//true
可以判断某值是否存在,或者是否满足条件
some的执行原理:因为要判断数组中的每一项,只要有一个回调函数返回true,some都会返回true,所以与every正好相反,当遇到一个回调函数的返回值为true时,可以确定结果,那么停止执行,后面都数据不再遍历,停在第一个返回true的位置;当回调函数的返回值为false时,需要继续向后执行,到最后才能确定结果,所以会遍历所有数据,实现类似于forEach的功能,遍历所有。
17.every()
判断数组中每一项都是否满足所给条件,当所有项都满足条件,才会返回true 与some相反
var arr = ["xiaoming", 3, 5, 1, 12, "liuqiao"];
var bol = arr.every(function (value, index, self) {
console.log(value);//遍历的值
console.log(index);//索引
console.log(self);//self表示自身
return value == 3;
});
console.log(bol);//false
every的执行原理和some都差不多,也是循环遍历,只要发现不满足条件,立马停止,返回false
18.flat()
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
//扁平化数组
arr = arr.flat(Infinity);
//使用Set特性,可以去重
arr = Array.from(new Set(arr));
console.log(arr);
//如果需要排序,需要自己定义回调函数 sort([fn]),返回数组
详情可见上述sort()方法
ES6 数组方法
1.扩展运算符 …
1.1 将一个数组转为用逗号分隔参数序列
1.2 求最大值
var arr = [7, 8, 20];
console.log(Math.max(...arr));//20
1.3 拼接数组
var arr1= [7, 8, 20];
var arr2=["xiaoming",25];
arr1.push(...arr2);
console.log(arr1);//[7, 8, 20, "xiaoming", 25]
1.4 深拷贝数组
var arr1 = [1,2,3]
var arr2 = [...arr1]
console.log(arr1) // [1, 2, 3]
console.log(arr2) // [1, 2, 3]
arr2[0]=0
console.log(arr1) // [1, 2, 3]
console.log(arr2) //[0, 2, 3]
1.5 合并多个数组(浅拷贝)
var arr1 = ['1', '2'];
const arr2 = ['3'];
const arr3 = ['4', '5'];
var arr4=[...arr1, ...arr2, ...arr3]
console.log(arr4)// ["1", "2", "3", "4", "5"]
1.6 将字符串转为数组
var msg='我是中国人';
console.log([...msg]);//["我", "是", "中", "国", "人"]
2.Array.of()
用于将一组值,转换为数组。
var arr = Array.of("xiaoming", 4, 7, 9);
console.log(arr);//["xiaoming", 4, 7, 9]
3.Array.from()
ES6为Array增加了from函数用来将其他对象转换成数组。
其他对象有要求:可以将两种对象转为数组
1.部署了iterator接口的对象,比如:Set,Map,Array
2.类数组对象,什么叫类数组对象,就是一个对象必须有length属性,没有length属性,转换出来的是空数组.
你会碰到的类数组对象有:函数中的 arguments 关键字,或者是一个 DOM 集合。
3.1 转换类数组对象
var arr = { '0': 10, '1': 15, length: 2 };
var array = Array.from(arr);
console.log(array);//[10, 15]
3.2 从string 中生成数组
var msg = "我是中国人";
var arr=Array.from(msg)
console.log(arr);//["我", "是", "中", "国", "人"]
3.3 从Set 生成数组 (可以作为数组的去重一种解决方案)
var set=new Set(['abc','foo','abc','cde']);
var arr=Array.from(set);
console.log(arr);// ["abc", "foo", "cde"]
//一行代码,数组去重
var arr1 = [1,2,4,2,3,5,1,3];
var arr2 = Array.from(new Set(arr1));
console.log(arr2);// [1, 2, 4, 3, 5]
3.4 可以遍历数组,进行数据处理
var arr = ["xiaoming", 3, 5, 1, 12, "liuqiao"];
arr=Array.from(arr,item=>{
return item+"_hello";
});
console.log(arr);//["xiaoming_hello", "3_hello", "5_hello", "1_hello", "12_hello", "liuqiao_hello"]
4.fill()
fill()函数,使用制定的元素填充数组,其实就是用默认内容初始化数组
三个参数:
第一个:填充的元素值
第二个:从哪里开始填充(位置索引)
第三个:从哪里之前结束
var arr = [2, 5, 1, 12, 8];
//一个值的时候都填充
arr.fill("liuqiao");
console.log(arr);//["liuqiao", "liuqiao", "liuqiao", "liuqiao", "liuqiao"]
//2个值的时候, 从这里开始,都填充
arr.fill("liuqiao",2);
console.log(arr);//[2, 5, "liuqiao", "liuqiao", "liuqiao"]
//三个值的时候,走索引,从哪里到哪里之前
arr.fill("liuqiao",0,2);
console.log(arr);//["liuqiao", "liuqiao", 1, 12, 8]
5.includes()
includes()方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
var arr = ["xiaobin", 3, 5, 1, 12, "liuqiao"];
onsole.log( arr.includes("liuqiao"));//true
6.entries(),keys(),values()
用于数组遍历,他们返回一个新的Array Iterator对象,可以用for…of循环进行遍历
唯一的区别就是
keys()是对键名的遍历,
values()是对键值的遍历
entries()是对键值对的遍历
//entries()是对键值对的遍历
var arr = ["a", "b", "c"];
var iterator = arr.entries();
for (let item of iterator) {
console.log(item);
}
//[0, "a"]
//[1, "b"]
//[2, "c"]
//keys() 返回 0 1 2
//values() 返回 a b c
四。 常用的迭代方法(包含ES5 和 ES6)
1.map
map() 映射,对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组.
var arr = ["xiaobin", 3, 5, 1, 12, "liuqiao"];
//currentValue 当前遍历的项
//index 项索引
//array 当前数组
let array = arr.map(function (currentValue, index, array) {
return currentValue + 'hello';
});
console.log(array);//["xiaobinhello", "3hello", "5hello", "1hello", "12hello", "liuqiaohello"]
2.filter
console.log(array);//[12, 8]
3.forEach
forEach(),对数组进行遍历循环,对数组中的每一项运行给定的函数.这个方法没有返回值.
与map的功能一样,但是区别是:
forEach()遍历执行某方法,但是没有返回值
map()遍历执行某方法,有返回值
var arr = ["xiaoming", 3, 5, 1, 12, "liuqiao"];
//item 当前遍历的项
//index 项索引
//array 当前数组
arr.forEach((item,index,array )=> {
//执行某功能
});
4.find()
用于找出第一个符合条件的数组成员,它的参数是一个回调函数,所有成员依次执行该回调函数.直到找出第一个返回值为true的成员,然后返回该成员.如果没有符合条件的成员则返回undefined
var arr = [3, 5, 1, 12, 8];
var array = arr.find(item => {
return item > 5
});
console.log(array);//12
var array = arr.find(item => {
return item > 12
});
console.log(array);//undefined
5.findIndex()
findIndex() 方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员不符合条件,则返回-1
var arr = [2, 5, 1, 12, 8];
var index = arr.findIndex(item => {
return item > 5
});
console.log(index);//3
var index = arr.findIndex(item => {
return item > 13e
});
console.log(index);//-1
迭代方法:
every() : 每一项都运行传入的函数,如果对每一项函数都返回为 true 则这个方法返回 ture。否则为 false
filter(): 过滤,对数组每一项都运行传入的函数, 函数返回 true 的项会组成数组之后返回
forEach() : 对数组每一项都运行传入的函数, 没有返回值
map(): 对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组
some(): 对数组每一项都运行传入的函数,如果有一项函数返回 true ,则这个方法返回 true
这些方法都不改变调用他们的数组
取数组每一项值
for in