Rumah > Soal Jawab > teks badan
Bagaimana js menentukan sama ada terdapat nilai pendua dalam objek tatasusunan, dan padamkan nilai pendua untuk menyimpan hanya satu
Sebagai contoh var arr = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'a'}]
Cara membandingkan
伊谢尔伦2017-07-05 10:59:12
Anda boleh menemuinya dengan gelung berganda, bandingkan yang pertama dengan yang berikut, padamkannya jika diulang, cari dari yang kedua, bandingkannya ke belakang, dan padamkannya jika diulang
const del = (arr) => {
for( let i=0;i<arr.length;i++) {
for(let j=i+1;j<arr.length;j++) {
if (arr[i].id==arr[j].id) {
arr.splice(j,1);
i--;
}
}
}
return arr;
}
伊谢尔伦2017-07-05 10:59:12
Ditulis sesuka hati. . . Tidak pasti jika semua keperluan dipenuhi. . . Haha
Kaedah 1:
const del = (arr)=>{
let map = [];
for(let i = 0; i < arr.length; i++) {
let key = JSON.stringify(arr[i]);
if(map.includes(key)) {
arr.splice(i, 1);
i--;
} else {
map.push(key);
}
}
return arr;
}
Kaedah 2:
const del = arr=>Array.from(new Set(arr.map(a=>JSON.stringify(a)))).map(a=>JSON.parse(a))
習慣沉默2017-07-05 10:59:12
temp.indexOf ( arr[i].name ) = -1;
res.push(arr[i]);
Terdapat banyak kaedah untuk menyahduplikasi tatasusunan, dan anda boleh mempunyai kaedah yang lebih baik
ringa_lee2017-07-05 10:59:12
arr ialah tatasusunan satu dimensi dan unsur-unsurnya ialah objek. Kandungan yang akan diproses ialah atribut name
di bawah objek.
var arr = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'a'}]
Lintasinya, kemudian bandingkan satu persatu setiap kali item
基础上再遍历一次 arr
dilalui Jika pendua ditemui, tinggalkan rekod
var logger = (a, b) => {
console.group('谁重复了?');
console.log('元素:', a);
console.log('下标:', b);
console.groupEnd();
}
// 遍历
arr.filter((item, idx, its) => {
// 一旦发现有重复的元素就返回 true (通过 its.some 注意他的两个参数 e 和 idx2)
// 无重复的过滤掉
return its.some((e, idx2) => {
return (e.name === item.name && idx2 !== idx);
});
}).forEach(logger);
我想大声告诉你2017-07-05 10:59:12
// Penyahduaan tatasusunan
// Kunci bermaksud penyahduaan tatasusunan yang kompleks, yang berdasarkan kekunci atribut objek dalam tatasusunan
fungsi arrUniq(arr, kunci) {
if (!Array.isArray(arr) || arr.length < 2) {
return arr;
}
// 简单数组去重
if (!key) {
return Array.from(new Set(arr));
}
// 复杂数组去重
var obj = {},
res = [];
arr.forEach((item) => {
if (!obj[item[key]]) {
res.push(item);
obj[item[key]] = true;
}
});
return res;
}