Javascript 通过第一个对象从数组数组中删除重复项

Javascript 通过第一个对象从数组数组中删除重复项,javascript,arrays,Javascript,Arrays,我有一个数组,如下所示: 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

我有一个数组,如下所示:

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])
}

我的输出看起来与输入数组一模一样。你知道我哪里做错了吗?

你可以在一个单独的数组中跟踪
字符串,然后跟踪它,例如:

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);

您可以在单独的数组中跟踪
字符串,并跟踪该字符串,例如:

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)
arr=[
[“鲍勃”、“美国”、“55”],
[“弗兰克”、“加拿大”、“20”],
[“鲍勃”、“英国”、“35”],
[“鲍勃”、“法国”、“38”],
[“安娜”、“波兰”、“22”]
]
var newArr=[];
对于(变量i=0;i

试试看

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)
arr=[
[“鲍勃”、“美国”、“55”],
[“弗兰克”、“加拿大”、“20”],
[“鲍勃”、“英国”、“35”],
[“鲍勃”、“法国”、“38”],
[“安娜”、“波兰”、“22”]
]
var newArr=[];
对于(变量i=0;i

查看函数unique2。它起作用了

originalArr=[
[“鲍勃”、“美国”、“55”],
[“弗兰克”、“加拿大”、“20”],
[“鲍勃”、“英国”、“35”],
[“鲍勃”、“法国”、“38”],
[“安娜”、“波兰”、“22”]
];
功能唯一性(arr){
uniqueArr=[];
用于(arr中的var i){
if(uniqueArr.indexOf(arr[i][0])=-1){
单向推送(arr[i]);
}
}
返回uniqueArr;
}
功能唯一2(arr){
uniqueArr=[];
键=[];
用于(arr中的var i){
if(key.indexOf(arr[i][0])=-1){
单向推送(arr[i]);
按键(arr[i][0]);
}
}
返回uniqueArr;
}
var response=document.getElementById('response');
response.textContent=JSON.stringify(unique(originalArr));
var response2=document.getElementById('response2');
response2.textContent=JSON.stringify(unique2(originalArr))
您的代码
我的代码

查看函数unique2。它起作用了

originalArr=[
[“鲍勃”、“美国”、“55”],
[“弗兰克”、“加拿大”、“20”],
[“鲍勃”、“英国”、“35”],
[“鲍勃”、“法国”、“38”],
[“安娜”、“波兰”、“22”]
];
功能唯一性(arr){
uniqueArr=[];
用于(arr中的var i){
if(uniqueArr.indexOf(arr[i][0])=-1){
单向推送(arr[i]);
}
}
返回uniqueArr;
}
功能唯一2(arr){
uniqueArr=[];
键=[];
用于(arr中的var i){
if(key.indexOf(arr[i][0])=-1){
单向推送(arr[i]);
按键(arr[i][0]);
}
}
返回uniqueArr;
}
var response=document.getElementById('response');
response.textContent=JSON.stringify(unique(originalArr));
var response2=document.getElementById('response2');
response2.textContent=JSON.stringify(unique2(originalArr))
您的代码
我的代码

问题是当您将整个数组推送到
uniqueArr
上时,您不能再对其使用
indexOf
,因为它不再包含简单的字符串。我删除了
jQuery
标记,因为这与此无关。问题是当您将整个数组推送到
uniqueArr
上时,您不能再对它使用
indexOf
,因为它不再包含简单的字符串。我删除了
jQuery
标记,因为它在这里不相关