我正在嘗試創建此腳本:https ://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/seek-and-destroy
在評論“驗證并洗掉”之后是我遇到問題的地方。我嘗試使用“destroyers”中的元素檢查陣列“theCheck”中的所有元素,如果元素不匹配,則腳本將該值推送到輸出陣列。
但無論如何,它都會推動每一個元素。
預期輸出值:[1,1]
當前輸出值值:[1,2,3,1,2,3]
function destroyer(arr) {
let theCheck = [];
let destroyers = [];
let output = [];
for (let i = 1; i < arguments.length; i ) {
destroyers.push(arguments[i]);
}
for (let i = 0; i < arguments[0].length; i ) {
theCheck.push(arguments[0][i])
}
//Verify and delete
var j = 0
for (let i = 0; i < theCheck.length; i ) {
for (j = 0; j < destroyers.length; j ) {
if (theCheck[i] !== destroyers[j]) {
output.push(theCheck[i])
break;
}
}
}
console.log(theCheck)
console.log(destroyers)
console.log(output)
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
uj5u.com熱心網友回復:
使用當前代碼,您正在回圈遍歷驅逐艦,并且每當您發現與您正在檢查的專案不匹配的驅逐艦時,您都將其添加到輸出中。但是因為您在destroyers 陣列中有兩個專案,所以可以保證這兩個專案中的一個不會與您正在檢查的特定專案匹配。
下面是一個版本,我們確定是否找到任何驅逐艦與我們正在檢查的專案匹配,并且只有當它不匹配時,我們才會將其添加到輸出中:
function destroyer(arr) {
let theCheck = [];
let destroyers = [];
let output = [];
for (let i = 1; i < arguments.length; i ) {
destroyers.push(arguments[i]);
}
for (let i = 0; i < arguments[0].length; i ) {
theCheck.push(arguments[0][i])
}
//Verify and delete
var j = 0
for (let i = 0; i < theCheck.length; i ) {
let found = false;
for (j = 0; j < destroyers.length; j ) {
if (theCheck[i] === destroyers[j]) {
found = true;
}
}
if(!found) output.push(theCheck[i]);
}
console.log(theCheck)
console.log(destroyers)
console.log(output)
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
你可以使用include函式來整理一下:
顯示代碼片段
function destroyer(arr) {
let theCheck = [];
let destroyers = [];
let output = [];
for (let i = 1; i < arguments.length; i ) {
destroyers.push(arguments[i]);
}
for (let i = 0; i < arguments[0].length; i ) {
theCheck.push(arguments[0][i])
}
//Verify and delete
var j = 0
for (let i = 0; i < theCheck.length; i ) {
if(!destroyers.includes(theCheck[i]))
output.push(theCheck[i]);
}
console.log(theCheck)
console.log(destroyers)
console.log(output)
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
uj5u.com熱心網友回復:
function destroyer(input, ...arr) {
return input.filter(element => !arr.includes(element));
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/474455.html
