我创建了一个函数,该函数将检查项目是否在先前创建的数组中,如果是,它们不仅会将它们返回到新数组,而且会从旧数组中删除它们,并将它们替换为新项。
我试过使用splice方法,但没有得到正确的结果。
let valuables = ['dilithium', 'gold', 'AE-35 unit', 'Legos', 'TI-89 calculator'];
let deckMops = function(itemArray){
let emptyArray = [];
for (i = 0; i < itemArray.length; i++)
if (valuables.includes(itemArray[i])){
emptyArray.push(itemArray[i]);
}
return emptyArray;
};
console.log(deckMops(['food', 'gold', 'Legos', 'air']));
console.log(valuables);预期产出
'gold'和'Legos'中的arr = ['food', 'gold', 'Legos', 'air']valuables.includes('gold')和valuables.includes('Legos')应该是falsearr.length应该是4发布于 2019-09-09 04:56:39
如果目标是删除元素,则每次从valuables中找到元素时,在将元素推送到emptyArray之后,都可以使用indexOf:
let valuables = ['dilithium', 'gold', 'AE-35 unit', 'Legos', 'TI-89 calculator'];
let deckMops = function(itemArray){
let emptyArray = [];
for (i = 0; i < itemArray.length; i++)
if (valuables.includes(itemArray[i])){
emptyArray.push(itemArray[i]);
valuables.splice(valuables.indexOf(itemArray[i]), 1);
}
return emptyArray;
};
console.log(deckMops(['food', 'gold', 'Legos', 'air']));
console.log(valuables);
发布于 2019-09-09 04:57:30
您可以使用itemArray和includes() (并将其存储在名为ret的变量中)从valuables中筛选出任何项,然后将valuables重新分配为等于已过滤的valuables版本,后者不再包括在ret中找到的项,如下所示:
let valuables = ['dilithium', 'gold', 'AE-35 unit', 'Legos', 'TI-89 calculator'];
const deckMops = function(itemArray) {
const ret = itemArray.filter(x => valuables.includes(x));
valuables = valuables.filter(x => !ret.includes(x));
return ret;
};
console.log(deckMops(['food', 'gold', 'Legos', 'air']));
console.log(valuables);
https://stackoverflow.com/questions/57847959
复制相似问题