JS常用陣列操作

大喻喻發表於2018-10-29

工作中遇到很多次關於陣列的操作,有百度有自己想,然後總結一篇關於陣列的操作,也方便以後查哈哈哈

-ES6中對陣列的操作

1、擴充套件運算子的用處:

一般情況下,對arr2操作同時會影響arr1,運用擴充套件運算子之後:
let arr1=['1','2','3'];
//let arr2=arr1;
let arr2=[...arr1];
console.log(arr2);
arr2.push('4');
console.log(arr2);//["1", "2", "3", "4"]
console.log(arr1);////["1", "2", "3"]
複製程式碼

-陣列取最大最小值:

1、物件陣列

取最大值
Math.max.apply(Math, array.map(function(o) {return o.value}))
複製程式碼
取最小值
Math.min.apply(Math, array.map(function(o) {return o.value}))
複製程式碼

2、普通陣列

在ES5中,使用Math.max函式的apply方法獲取陣列最大值
Math.max.apply(null, [-1, 1, 1001, -52]); // 1001
複製程式碼
在ES6中, 我們使用擴充套件符作為函式的引數
Math.max(...[-1, 1, 1001, -52]); // 1001
複製程式碼

-js陣列filter方法與find方法:

1、filter() 方法將匹配元素集合縮減為匹配指定選擇器的元素.該方法不改變原陣列,返回的是篩選後滿足條件的陣列.
eg:
var arr= cityList.filter(function(item){
    return item.cityCode == sendCityCode; 
})//arr為陣列

2、find() 方法返回的是篩選後滿足條件的物件.
eg:
var obj=arr.find(function (x) {
    return x.id === 1
})//obj為物件
複製程式碼

-物件的合併去重

1、普通陣列

let arr1 = [3,5,2,3,6];
let arr2 = [5,2,4,6,8,7,9,2];
let arr = arr1.concat(arr2);  //合併陣列
let arrNew= new Set(arr); //通過set集合去重
 
console.log("arrNew",Array.from(arrNew)); //Array.from()方法可以將Set資料型別轉化為陣列型別。
複製程式碼

2、物件陣列

let json1=[
	{id:1,name:"aaa"},
	{id:2,name:"bbb"},
	{id:3,name:"ccc"},
] 
 
let json2=[
	{id:1,name:"aaa"},
	{id:2,name:"bbb"},
	{id:4,name:"ddd"},
]
 
let json = json1.concat(json2); //兩個陣列物件合併
let newJson = []; //盛放去重後資料的新陣列
for(item1 of json){  //迴圈json陣列物件的內容
    let flag = true;  //建立標記,判斷資料是否重複,true為不重複
    for(item2 of newJson){  //迴圈新陣列的內容
        if(item1.id==item2.id){ //讓json陣列物件的內容與新陣列的內容作比較,相同的話,改變標記為false
            flag = false;
	   }
	}

    if(flag){ //判斷是否重複
        newJson.push(item1); //不重複的放入新陣列。  新陣列的內容會繼續進行上邊的迴圈。
    }
}
 
console.log("newJson",newJson);

複製程式碼

相關文章