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
标记,因为它在这里不相关