1.使用splice()
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组
。- 第一个参数表示要删除的位置(从0计数),第二个参数表示要移除的数组元素的个数
var aa = [4, 5, 6, 23, 33, 44, 55]
console.log(aa);
aa.splice(5,1)//删除下标为5开始的元素,并删除一个
console.log(aa);
- 打印结果
应用: 去掉一个数组的重复元素['c', 'a', 'z', 'a', 'x', 'a','c']
===========> ['c', 'a', 'z', 'x']
<script>
function repeat(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {//第一次是拿第一个数据和剩余的n-1个数据判断是否相等、第二次是拿第二个数据和剩余的n-1个数据相比
if (arr[i] == arr[j]) {
var del = j;
arr.splice(del, 1);//找到了该数据的下标就删除了
}
}
}
return arr;
}
var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'c'];
console.log(repeat(arr));
</script>
- 打印结果
2. 使用indexOf()
indexOf()
方法返回在数组中可以找到一个给定元素的第一个索引
,如果不存在,则返回-1
。
//获取数组元素的下标----没有该元素的时候返回值为-1,有就返回该元素的下标
var aa = [4, 5, 6, 23, 33, 44, 55]
console.log(aa);
console.log(aa.indexOf(222));
console.log(aa.indexOf(44));
//数组末尾追加元素 666
aa.push(666);
console.log(aa);
- 打印结果
应用:
<script>
function repeat1(arr) {
var temp = [];//建立一个新数组保存删除后的数组
//遍历数组
for (var i = 0; i < arr.length; i++) {
if (temp.indexOf(arr[i]) == -1) {//在新数组中若不存在,该元素则添加到该temp[]数组中
temp.push(arr[i])//push()------ 在数组末尾追加元素
}
}
return temp;//返回删除后的数组
}
console.log(repeat1(arr));//调用函数并打印结果
</script>
- 打印结果
3. 使用Set
Set
对象允许你存储任何类型的唯一值
,无论是原始值或者是对象引用。Set
对象是值的集合,你可以按照插入的顺序迭代它的元素。Set
中的元素只会出现一次,即Set
中的元素是唯一的
。
var aa = [1,2,3,3,2,1,4,5,6]
console.log(new Set(aa));
4. 数组中去除数组
遇到了一个特别的:第一个数组中去除第二个数组中的所有元素。
let arr1 = [
{ id: 639, name: "商品管理", type: 0, pId: 638, code: "1" },
{ id: 640, name: "商品分类", type: 0, pId: 639, code: "2" },
{ id: 642, name: "增加分类", type: 0, pId: 640, code: "3" },
{ id: 645, name: "编辑分类", type: 0, pId: 640, code: "4" },
{ id: 646, name: "消息管理", type: 0, pId: 655, code: "4" }
]
let arr2 = [
{ id: 640, name: "商品分类", type: 0, pId: 639, code: "2" },
{ id: 642, name: "增加分类", type: 0, pId: 640, code: "3" },
{ id: 645, name: "编辑分类", type: 0, pId: 640, code: "4" },
]
let res= arr2.map(el=>el.id)//取出一组唯一标识
let finalResult=[]
arr1.forEach(el=>{
if(!res.includes(el.id)){
finalResult.push(el)
}
})
console.log(finalResult,'finalResult');
更简洁的方法使用filter
let res= arr2.map(el=>el.id)
let finalResult= arr1.filter(el=>!res.includes(el.id))
console.log(finalResult,'finalResult');