[英]Compare two arrays having objects and remove duplicates from first array
[英]Remove duplicates from array of arrays by the first object
我有一个看起来像这样的数组数组:
arr = [
["Bob","USA","55"],
["Frank","Canada","20"],
["Bob","UK","35"],
["Bob","France","38"],
["Anna","Poland","22"]
]
我想删除在第一个位置具有相同值(相同名称)的重复数组-所以我想我的输出看起来像这样:
arr = [
["Bob","USA","55"],
["Frank","Canada","20"],
["Anna","Poland","22"]
]
我正试图以这种方式做到这一点:
uniqueArr = []
for (var i in arr) {
if (uniqueArr.indexOf(arr[i][0]) === -1)) {
uniqueArr.push(arr[i][0])
}
一切正常-我的输出看起来像鲍勃,弗兰克,安娜
但是问题是当我尝试使用唯一的值名称接收整个数组时。 当我在做:
uniqueArr = []
for (var i in arr) {
if (uniqueArr.indexOf(arr[i][0]) === -1)) {
uniqueArr.push(arr[i])
}
我的输出看起来就像输入数组。 你知道我在哪里做错了吗?
您可以在单独的数组中跟踪key
字符串,然后跟踪它,例如:
var uniqueArr = [],
keys = []; // Create an array for storing the key values
for (var i in arr) {
if (keys.indexOf(arr[i][0]) === -1) {
uniqueArr.push(arr[i]); // Push the value onto the unique array
keys.push(arr[i][0]); // Push the key onto the 'key' array
}
}
console.log(uniqueArr);
尝试
arr = [
["Bob", "USA", "55"],
["Frank", "Canada", "20"],
["Bob", "UK", "35"],
["Bob", "France", "38"],
["Anna", "Poland", "22"]
]
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (isInArr(newArr, arr[i]) == -1) {
newArr.push(arr[i]);
}
}
function isInArr(checkArr, value) {
var index = -1;
for (var i = 0; i < checkArr.length; i++) {
if (checkArr[i][0] == value[0]) {
index = i;
break;
}
}
return index;
}
console.log(newArr)
看一下功能unique2。 有用!
originalArr = [ ["Bob", "USA", "55"], ["Frank", "Canada", "20"], ["Bob", "UK", "35"], ["Bob", "France", "38"], ["Anna", "Poland", "22"] ]; function unique(arr) { uniqueArr = []; for (var i in arr) { if (uniqueArr.indexOf(arr[i][0]) === -1) { uniqueArr.push(arr[i]); } } return uniqueArr; } function unique2(arr) { uniqueArr = []; keys = []; for (var i in arr) { if (keys.indexOf(arr[i][0]) === -1) { uniqueArr.push(arr[i]); keys.push(arr[i][0]); } } return uniqueArr; } var response = document.getElementById('response'); response.textContent = JSON.stringify(unique(originalArr)); var response2 = document.getElementById('response2'); response2.textContent = JSON.stringify(unique2(originalArr));
<h1>Your code</h1> <div id="response"></div> <h1>My code</h1> <div id="response2"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.