4 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果你想要多維數(shù)組作為結(jié)果
function filteredArray(arr, elem) {
let newArr = [];
for (var i = 0; i < arr.length; i++) {
let subArray=[];
for (var j = 0; j < arr[i].length; j++) {
if (arr[i][j] !==elem) {
subArray.push(arr[i][j]);
}
}
newArr.push(subArray)
}
return newArr;
}
console.log((filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3)));
如果你想要平面陣列作為結(jié)果
function filteredArray(arr, elem) {
let newArr = [];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
if (arr[i][j] !==elem) {
newArr.push(arr[i][j]);
}
}
}
return newArr;
}
console.log((filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3)));

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
不使用filter方法,但如果可以使用map,reduce將簡(jiǎn)化,可以避免使用索引處理。
const filteredArray = (arr, elem) =>
arr.map((data) =>
data.reduce((acc, cur) => (cur !== elem && acc.push(cur), acc), [])
);
console.log(
filteredArray(
[
[3, 2, 3],
[1, 6, 3],
[3, 13, 26],
[19, 3, 9],
],
3
)
);
如果您需要平面數(shù)組,只需更改map為flatMap上面的代碼。
const filteredFlatArray = (arr, elem) =>
arr.flatMap((data) =>
data.reduce((acc, cur) => (cur !== elem && acc.push(cur), acc), [])
);
console.log(
filteredFlatArray(
[
[3, 2, 3],
[1, 6, 3],
[3, 13, 26],
[19, 3, 9],
],
3
)
);

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
更正
i <= arr.length=>i < arr.length
arr.indexOf(elem)=>arr[i].indexOf(elem)
function filteredArray(arr, elem) {
let newArr = [];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
if (arr[i].indexOf(elem) != -1) {
newArr.push(arr[i]);
}
}
}
return newArr;
}
console.log(JSON.stringify(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3)));

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
這個(gè)邏輯有什么問題?
1-您需要在訪問它們之前聲明空子數(shù)組。
newArr[i] = [];
2-如果未找到 elem,則要推送整個(gè)數(shù)組(我假設(shè)是為了節(jié)省時(shí)間),請(qǐng)糾正條件或放入其他內(nèi)容。
newArr.push(arr[i]); but you should use this
newArr[i] = arr[i]; because i created new empty sub arrays.
3-您需要實(shí)際使用 j 來遍歷子數(shù)組。
newArr[i].push(arr[i][j]);
4-已經(jīng)回答,但你需要檢查你沒有超出數(shù)組。
i < arr.length j < arr[i].length
5-您缺少極端情況。
console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 5, 9], [3, 3, 3]], 3) );
function filteredArray(arr, elem) {
const newArr = [];
let skip = 0;
for (var i = 0; i < arr.length; i++) {
newArr[i] = [];
skip = arr[i].indexOf(elem);
for (var j = 0; j < arr[i].length; j++) {
if (skip !== -1) {
if (arr[i][j] !== elem) {
newArr[i].push(arr[i][j]);
}
} else {
newArr[i] = arr[i];
break;
}
}
}
return newArr;
}
console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 5, 9], [3, 3, 3]], 3));
添加回答
舉報(bào)