jsの中で配列が重いいくつかの実現方法(違い)
24176 ワード
1.ES 6を利用したset方法(常用)の説明: set:SetはES 6の新しいデータ構造で、配列と似ていますが、自身に重複値がありません. 展開演算子(…):展開setは、行列 に変換される. Aray.from:Aray.fromは、2つの種類のオブジェクトを本物の配列に変換するために使用できます.オブジェクトを巡回できます.
短所:配列中の空のオブジェクトは削除できません.
短所:配列中の空のオブジェクトは削除できません.
let ary = [12, 23, 12, 15, 25, 23, 25, 14, 16];
ary = [...new Set(ary)];
console.log(ary);
let ary = [12, 23, 12, 15, 25, 23, 25, 14, 16];
ary = Array.from(new Set(ary));
console.log(ary);
2.その他の方法// 1,2,3,'a','2',null,NaN,undefined,{a:1},true 10
var arr = [3,'a', 1, 2, 2, 3, '2', 3, null, NaN, null, NaN, undefined, {size:1}, undefined, true, {size:1}, true];
// : splice
// : for , ,
function newArr(arr) {
for(var i=0; i<arr.length; i++) {
for(var j=i+1; j<arr.length; j++) {
if(arr[i] == arr[j]) {
arr.splice(j,1);
j--;
}
}
}
return arr;
}
console.log(newArr(arr));
// 0: 3
// 1: "a"
// 2: 1
// 3: 2
// 4: null
// 5: NaN
// 6: NaN
// 7: {size: 1}
// 8: {size: 1}
// length: 9
// :underfined ,true
// : NaN, {size:1} ,2 '2'
// :indexOf
// : , indexOf , -1, push
function newArr2(arr) {
var result =[];
for(var i=0; i<arr.length; i++) {
if(result.indexOf(arr[i]) == -1) {
result.push(arr[i])
}
}
return result;
}
console.log(newArr2(arr))
// 0: 3
// 1: "a"
// 2: 1
// 3: 2
// 4: "2"
// 5: null
// 6: NaN
// 7: NaN
// 8: undefined
// 9: {size: 1}
// 10: true
// 11: {size: 1}
// length: 12
// :
// : NaN, {size:1}
// :Set Array.from
// :Set ES6 , , ,Array.from : ,
function newArr3(arr) {
return Array.from(new Set(arr));
}
console.log(newArr3(arr))
// 0: 3
// 1: "a"
// 2: 1
// 3: 2
// 4: "2"
// 5: null
// 6: NaN
// 7: undefined
// 8: {size: 1}
// 9: true
// 10: {size: 1}
// 11: {}
// 12: {}
// length: 13
// :
// : {size:1} ,{}
// : Set
// : ...
var newArr4 = [...new Set(arr)];
console.log(newArr4);
// 0: 3
// 1: "a"
// 2: 1
// 3: 2
// 4: "2"
// 5: null
// 6: NaN
// 7: undefined
// 8: {size: 1}
// 9: true
// 10: {size: 1}
// length: 11
// :
// : {a:1}
// :
// : , , 、
Array.prototype.unique = function(){
var temp = {};
var newArr = [];
for(var i=0; i < this.length; i++) {
if(!temp.hasOwnProperty(this[i])) {
temp[this[i]] = this[i];
newArr.push(this[i])
}
}
return newArr;
}
console.log(arr.unique());
// 0: 3
// 1: "a"
// 2: 1
// 3: 2
// 4: null
// 5: NaN
// 6: undefined
// 7: {size: 1}
// 8: true
// length: 9
// :
// : '2' 2
//
// : sort
// : ;
// sort temp , temp 0 1, for ,
function newArr5(arr) {
if(!Array.isArray(arr)) {
console.log('type error!')
return;
}
temp = arr.sort();
var result = [temp[0]];
for(var i =1; i<arr.length; i++) {
if(temp[i] !== temp[i-1]) {
result.push(temp[i]);
}
}
return result;
}
console.log(newArr5(arr));
// 0: 1
// 1: 2
// 2: "2"
// 3: 3
// 4: NaN
// 5: NaN
// 6: {size: 1}
// 7: {size: 1}
// 8: "a"
// 9: null
// 10: true
// 11: undefined
// length: 12
// :
// : NaN , {size:1}