如何使用 for 循环在不使用 js 方法的情况下从数组数组中删除项目?



我正在使用 for 循环从数组数组中删除 3 个?

我已经尝试了一些条件语句,但它对我不起作用。

let myArray = [
[1, 2, 3],
[5, 4, 3],
[3, 6, 7],
[3, 8, 9]
];
let newArray = [];
for (let i = 0; i < myArray.length; i++) {
if (myArray[i] !== 3) {
newArray.push(myArray[i]);
console.log(newArray);
}
}

我预计输出 1,2,4,5,6,7,8,9,但实际输出为 3。

let myArray = [
[1, 2, 3],
[5, 4, 3],
[3, 6, 7],
[3, 8, 9]
];
let newArray = [];
for (let i = 0; i < myArray.length; i++) {
for(let j=0; j< myArray[i].length; j++) {
if (myArray[i][j] != 3) {
newArray.push(myArray[i][j]);
}
}
}
console.log(newArray);

myArray[i]

是一个数组,你也必须遍历myArray[i]的项目。

let myArray = [ [1, 2, 3], [5, 4, 3], [3, 6, 7], [3, 8, 9]];
let newArray = [];
for(let i=0; i<myArray.length; i++) {
for(let j=0; j<myArray[i].length; j++) {
if (myArray[i][j] != 3) {
newArray.push(myArray[i][j]);
}
}
}
console.log(newArray);

你有一个二维数组,但你把它当作一个二维数组。

请尝试以下操作:

let myArray = [
[1, 2, 3],
[5, 4, 3],
[3, 6, 7],
[3, 8, 9]
];
let newArray = [];
for (let i = 0; i < myArray.length; i++) {
newArray.push([]);
for (let j = 0; j < myArray[i].length; j++) {
if (myArray[i][j] != 3) {
newArray[i].push(myArray[i][j]);           
}
}
}
console.log(newArray);

问题出在您的流上。 下面是你的代码应该是什么样子的:

var newArray = [];
var temp = [];
var myArray = [
[1, 2, 3],
[5, 4, 3],
[3, 6, 7],
[3, 8, 9]
];
for (var i = 0; i < myArray.length; i++) {
temp = [];
for( var j = 0; j < myArray[i].length; j++){
if (myArray[i][j] != 3) {
temp[j]= myArray[i][j];
}
}
newArray[i] = temp;
}
console.log(newArray);

这是一种单循环方法,根据实际循环目的,使用长度的动态检查。

您可以分配所有值,并为嵌套数组获取一个新的索引k以分配给正确的索引。此索引仅在有效值上递增。

var myArray = [[1, 2, 3], [5, 4, 3], [3, 6, 7], [3, 8, 9]],
newArray = [],
i, j, k;
for (i = 0; i < (myArray[j] || myArray).length; i++) {
if (j === undefined) {
j = i;
i = 0;
k = 0;
newArray[j] = [];
}
if (myArray[j][i] !== 3) {
newArray[j][k++] = myArray[j][i];
}
if (i + 1 >= myArray[j].length) {
i = j;
j = undefined;
}
}
console.log(newArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }

最新更新