六、数组系列
1、JS判断变量是不是数组
-
isArray
var arr = [1,2,3]; console.log( Array.isArray( arr ) );
-
instanceof
var arr = [1,2,3]; console.log( arr instanceof Array );
-
原型/prototype
var arr = [1,2,3]; console.log( Object.prototype.toString.call(arr).indexOf('Array') > -1 );
-
isPrototypeOf()
var arr = [1,2,3]; console.log( Array.prototype.isPrototypeOf(arr) )
-
constructor
var arr = [1,2,3]; console.log( arr.constructor.toString().indexOf('Array') > -1 )
2、Slice对比Splice
-
slice(start [, end]):截取数组
-
该方法不会改变原数组
-
返回:一个新的数组
-
-
splice(start, deleteCount[, item1, item2…]):插入、删除、替换
-
该方法会改变原数组
-
返回:删除的元素
-
注意:正整数从头开始数,负整数可从数组结尾处规定位置
3、数组去重
-
new Set
var arr1 = [1,2,3,2,4,1]; function unique(arr){ return [...new Set(arr)] } console.log( unique(arr1) );
-
indexOf
var arr2 = [1,2,3,2,4,1]; function unique( arr ){ var brr = []; for( var i=0;i<arr.length;i++){ if( brr.indexOf(arr[i]) == -1 ){ brr.push( arr[i] ); } } return brr; } console.log( unique(arr2) );
-
sort
var arr3 = [1,2,3,2,4,1]; function unique( arr ){ arr = arr.sort(); var brr = []; for(var i=0;i<arr.length;i++){ if( arr[i] !== arr[i-1]){ brr.push( arr[i] ); } } return brr; } console.log( unique(arr3) );
4、找出多维数组最大值
function fnArr(arr){
var newArr = [];
arr.forEach((item =>{
newArr.push(Math.max(...item))
})
return newArr;
}
console.log(fnArr([
[4,5,1,3],
[13,27,18,26],
[32,35,37,39],
[1000,1001,857,1]
]));
5、find对比filter
-
返回:
-
filter:返回新数组,不会改变原始数组
-
find:返回具体的内容
let arr = [1,2,3,4,5,2,45] console.log(arr.filter(v => v > 2), arr) //[3,4,5,45], arr不变 console.log(arr.find(v => v > 2)) //3 -- 返回第一个匹配结果
-
-
匹配
-
find:匹配第一个即返回
-
filter:返回整体
-
6、some对比every
-
some:只要有一个元素符合要求就返回true(一项匹配)
-
every:数组中的每一个元素都满足要求才返回true(全部匹配)
let arr = [1,2,3,4,231,1324,1,12,4,32] console.log(arr.some(v => v > 55)) //true console.log(arr.every(v => v > 55)) //false