Appearance
有关数组的题
如何判断是否是数组
假设arr是数组
- Array.isArray(arr)
- arr instanceof Array。instanceof判断能力不强
- Object.prototype.toString.call(arr).indexOf('Array')。indexOf方法可用可不用。用了之后返回值不是-1即可。数组的话应该会返回8
- Array.prototype.isPrototypeOf(arr)
- arr.constructor.toString().indexOf('Array')
slice、splice
slice用来截取,返回新数组。允许填入两个参数,slice(start, end)。数值可正可负。如果越界则返回空数组。
splice会改变原数组,返回删除的内容。splice(start,deleteCount, item1,item2,...)。如果不写item1等,会删除start下标开始,deleteCount大小的数组值;如果写了,则删除后会添加进item1等的值。
数组去重
- 使用new Set(arr)。但返回值是对象,有两种方法转为数组:[...new Set(arr)], Array.from(new Set(arr))。Array.from()是es6新增的方法。
- 使用自己写的逻辑去重(可以用sort先排序)
javascript
let arr = [1,3,5,42,3,5,11,28];
arr = arr.sort();
let arr1 = [];
for(let i = 0;i<arr.length;i++){
if(arr[i] != arr[i-1]){
arr1.push(arr[i]);
}
}
console.log(arr1);