所以我有一個陣列陣列,每個陣列都有一個值和一個對應于所述值的名稱。在這里,我對其進行了硬編碼,但實際上并非如此。
我有一個函式應該回傳它給出的陣列,但每個值只有一個。但是,該函式也在洗掉其他值。這是代碼:
const scorersArr = [
[2, 'Lewandowski'],
[1, 'Gnarby'],
[2, 'Lewandowski'],
[1, 'Hummels'],
]
const returnNoDupes = (arr) => {
let returnArr = arr;
for (const arrVal1 of arr) {
for (const arrValLoop of arr) {
if (arrVal1 === arrValLoop) returnArr.splice(arrVal1, 1)
}
}
return returnArr;
}
console.log(returnNoDupes(scorersArr)); //. Expected: [[2, "Lewandowski"], [1, "Hummels"], [1, "Gnarby"]]
我知道這個錯誤與我有一個二維陣列這一事實有關,因為這個函式適用于一維陣列,但我不能完全確定它是什么。
uj5u.com熱心網友回復:
嘗試這個
const scorersArr = [
[2, 'Lewandowski'],
[1, 'Gnarby'],
[2, 'Lewandowski'],
[1, 'Hummels'],
]
const duplicatesRemoved = Array.from(new Set(scorersArr.map(JSON.stringify)), JSON.parse)
console.log(duplicatesRemoved)
一個簡化/非高級的 JS 解決方案
var scorersArr = [
[2, 'Lewandowski'],
[1, 'Gnarby'],
[2, 'Lewandowski'],
[1, 'Hummels'],
];
var nonDupesStringArray = [];
for (let i = 0; i < scorersArr.length - 1; i ) {
for (let j = 0; j < scorersArr.length; j ) {
let currentArrayString = JSON.stringify(scorersArr[i]);
let currentComporisonArrayString = JSON.stringify(scorersArr[j]);
let isADuplicate = currentArrayString !== currentComporisonArrayString;
let isNotInDuplicatesArray = nonDupesStringArray.indexOf(currentComporisonArrayString) < 0;
if (isADuplicate && isNotInDuplicatesArray)
nonDupesStringArray.push(JSON.stringify(scorersArr[j]))
}
}
// convert strings back into array
var nonDupes = []
for (let i = 0; i < nonDupesStringArray.length; i ) {
nonDupes.push(JSON.parse(nonDupesStringArray[i]))
}
console.log(nonDupes)
我希望這有幫助
uj5u.com熱心網友回復:
你可以這樣試試
const scorersArr = [
[2, 'Lewandowski'],
[1, 'Gnarby'],
[2, 'Lewandowski'],
[1, 'Hummels'],
]
const returnNoDupes = (arr) => {
for (let i =0 ; i<arr.length ; i ){
for (let j =0 ; j<arr.length ; j ) {
if (arr[i][1] === arr[j][1] && i!==j){
arr.splice(j, 1)
}
}}
return arr;
}
console.log(returnNoDupes(scorersArr));
uj5u.com熱心網友回復:
Array.reduce()使用方法檢查以下代碼段
const scorersArr = [
[2, 'Lewandowski'],
[1, 'Gnarby'],
[2, 'Lewandowski'],
[1, 'Hummels'],
];
const returnNoDupes = (arr) => {
return arr.reduce((acc, item) => {
if (!acc[1].includes(item.join())) {
acc[0].push([...item]);
acc[1].push(item.join());
}
return acc;
}, [[], []])[0];
};
console.log(returnNoDupes(scorersArr));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525600.html
