配列デ重量および配列オブジェクト中の多属性判定デ重量
19797 ワード
葃萼配列の中の値はnumberで、string、bollanの時:
var data=[1,2,3,2,5,1];
1.ES 6セット function unique(arr){
let newArr=new Set(data);
let result=[...newArr];
return result;
}
console.log(unique(data));//[1, 2, 3, 5]
2階for function unique(arr){
var re = [array[0]];
for (var i = 1; i < array.length; i++) {
var isunique = true;
for (var r = 0; r < re.length; r++) {
if (re[r] === array[i]) {
isunique = false;
}
}
if (isunique) {
re.push(array[i]);
}
}
return re;
}
console.log(unique(data));//[1, 2, 3, 5]
3.利用対象属性が存在するかどうか function unique(arr){
var re = [];
var obj={};
for (var i = 0; i < arr.length; i++) {
if(!obj.hasOwnProperty(arr[i])){
re.push(arr[i]);
obj[arr[i]]=true;
}
}
return re;
}
console.log(unique(data));//[1, 2, 3, 5]
葃菗配列の値が対象の場合、二つの属性が結合して判断します.nameとageが同じである場合、重複と判断します.var data = [{name: "a", age: 20, count: 5},
{name: "b", age: 21, count: 8},
{name: "a", age: 20, count: 9}
];
1.オブジェクトの属性 var result = [];
var obj = {};
for(var i =0; i<arr.length; i++){
if(!obj[arr[i][name1]+"|"+arr[i][name2]]){
result.push(arr[i]);
obj[arr[i][name1]+"|"+arr[i][name2]] = true;
}
}
return result;
2.双forvar re = [array[0]];
for (var i = 1; i < array.length; i++) {
var isunique = true;
for (var r = 0; r < re.length; r++) {
if (re[r].name === array[i].name&&re[r].age === array[i].age) {
isunique = false;
}
}
if (isunique) {
re.push(array[i]);
}
}
return re;
3.reducefunction arrayUnique2(arr, name1,name2) {
var obj = {};
return arr.reduce(function (item, next) {
if(!obj[arr[i][name1]+"|"+arr[i][name2]]){
item.push(arr[i]);
obj[arr[i][name1]+"|"+arr[i][name2]] = true;
}
return item;
}, []);
}
console.log(arrayUnique2(data, "name","age"));