数组的遍历方法和数组去重
1.遍历方法
forEach(function( item,index,array) {})
item:数组元素,
index:可选,该元素对应的下标,
array:可选,遍历的数组本身
map(function( item,index,array) {})
*最常用 自己定义规则
遍历数组,并且根据新的规则返回新数组。
*item:数组元素,
*index:可选,该元素对应的下标
*array:可选,遍历的数组本身
filter(function(item,index,array){})
*筛选元素组,组成新的
遍历数组,并且根据规则返回符合条件的元素组成新数组。
如果没有符合条件的,就返回空数组。
find(function(item,index,array) {})
遍历数组,返回数组中满足条件的第一个值。
没有符合条件的undefined。
every(function(item,index, array))
遍历数组,如果数组中每个元素都满足条件,则返回true。
some(function(item,index,array){
遍历数组,数组中只要有一个符合条件就返回 true。
});
数组去重
方法一、循环比较有一样的时候就删除。
var arr1=['a','b','c','b','c','d','d'];
for( var i = 0; i<arr1.length;i++){
for(var j = i +1; j<arr1.length;j++){
if (arr1[i] === arr1[j]) {
//一样的时候就删除
arr1.splice(j,1);
j--;
}
}
}
console.log(arr1);
方法二、创建新数组 用indexOf去找 没有返回的-1就加进去(推荐使用,不会破坏原数组)
var newArr=[];
for(var i = 0;i<arr1.length;i++){
if (newArr.indexOf(arr1[i]) == -1) {
//用indexOf去找 没有返回的-1就加进去
newArr.push(arr1[i])
}
}
console.log(newArr)
方法三、Set
Set 是ES6中新增的数据结构、类似数组,但是里面没有重复的元素;
var list = new Set(['a', 'b ', 'a']);
console.log('通过size获取Set的长度: ',list.size);
list.delete('b');//s删除Set元素,而不是写下标
console.log(list.has('b'));
//.has(value) 返回一个布尔值表示是否存在
console.log(list.clear)
//清空啦
console.log(list.keys()); //遍历- Set.keys -返回所有的键名
console.log(list.values);//遍历-Set.values()-返回所有键值
//备注:由于set结构没有键名,keys和 values行为一致。