先の面接試験問題のJS対象配列は重くなります.
997 ワード
先日実習を探しに行きましたが、JSの対象の配列が重いという問題に出会いました.解法は実はJSの普通の配列と重い方法が似ています.
1.JS配列は重いです
方法1:
対象配列の重さ解消には多くの方法がありますが、一番分かりやすい方法を紹介します.配列の中のオブジェクトを文字列JSON.stringify()に変換し、またJS配列を重さに行く方法2を利用して配列を処理すればいいです.
1.JS配列は重いです
方法1:
var arr = [1,1,2,2,2,3,4,5,6,7,8,9,9,9,10];
var newArr = [...new Set(arr)];//ES6
console.log(newArr);
方法2: var arr = [1,1,2,2,2,3,4,5,6,7,8,9,9,9,10];
var newArr = arr.filter((item,index,array)=>{
return arr.indexOf(item) === index;
})
console.log(newArr);
2.JSオブジェクト配列のデクリメント対象配列の重さ解消には多くの方法がありますが、一番分かりやすい方法を紹介します.配列の中のオブジェクトを文字列JSON.stringify()に変換し、またJS配列を重さに行く方法2を利用して配列を処理すればいいです.
var arr = [{a:1,b:2},{a:1,b:2},{a:3,b:1},{a:5,b:2},{a:3,b:1}];//
var stringArr = arr.map((item,index,array)=>{
return JSON.stringify(item)
})//
var filterArr = stringArr.filter((item,index,array)=>{
return array.indexOf(item) === index;
})//
var lastArr = filterArr.map((item,index,array)=>{
return JSON.parse(item);
})//
console.log(lastArr);//[{a:1,b:2},{a:3,b:1},{a:5,b:2}];