我想只在另一个数组中存在空元素时才从数组中删除元素。我有这个:
var fruits = ["Banana", "Naranja", "Manzana", "Mango", "Fresa", "Limón", "Lima", "Sandia"];
var vegetales = ["", "Ajo", "", "Cebolla", "Tomate", "", "", "Zanahoria"];
// The output should be this:
// ["Naranja", "Mango", "Fresa", "Sandia"]
function myFunction() {
for (var i in vegetales) {
if (vegetales[i] == '') {
frutaAeliminar = fruits[i];
indexFruta = fruits.indexOf(frutaAeliminar);
if (indexFruta != -1) {
fruits.splice(indexFruta, 1)
}
}
}
console.log(fruits);
}
myFunction();
答案 0 :(得分:2)
使用ES6的示例
使用Array.filter并在三元组中使用&&
,如果不需要else
,我们就不会打扰
const fruits = ["Banana", "Naranja", "Manzana", "Mango", "Fresa", "Limón", "Lima", "Sandia"];
const vegetales = ["", "Ajo", "", "Cebolla", "Tomate", "", "", "Zanahoria"];
/* only pick if corresponding array item does not equal '' */
const newArray = fruits.filter((fruit, idx) => (vegetales[idx] !== '' && fruit))
console.log(newArray)

答案 1 :(得分:1)
简单的解决方案:
var fruits = ["Banana", "Naranja", "Manzana", "Mango", "Fresa", "Limón", "Lima", "Sandia"];
var vegetales = ["", "Ajo", "", "Cebolla", "Tomate", "", "", "Zanahoria"];
var result = [];
for(var i = 0;i<fruits.length;i++){
if(vegetales[i]!=""){
result.push(fruits[i]);
}
}
console.log(result);
输出:
["Naranja", "Mango", "Fresa", "Sandia"]
在这里运行:
var fruits = ["Banana", "Naranja", "Manzana", "Mango", "Fresa", "Limón", "Lima", "Sandia"];
var vegetales = ["", "Ajo", "", "Cebolla", "Tomate", "", "", "Zanahoria"];
var result = [];
for(var i = 0;i<fruits.length;i++){
if(vegetales[i]!=""){
result.push(fruits[i]);
}
}
console.log(result);
N.B。:可以进行修改。
答案 2 :(得分:1)
我认为你混淆了,因为你在循环时改变了数组的长度。此解决方案使用第三个数组来推送结果,而无需更改原始数组。
另外,一些快速提醒:
for...in
迭代对象键/值对 - 否则使用标准for
循环。var
语句声明你的变量 - 否则你将污染全局命名空间。
var fruits = ["Banana", "Naranja", "Manzana", "Mango", "Fresa", "Limón", "Lima", "Sandia"];
var vegetales = ["", "Ajo", "", "Cebolla", "Tomate", "", "", "Zanahoria"];
var i;
var outputArr = [];
// The output should be this:
// ["Naranja", "Mango", "Fresa", "Sandia"]
function myFunction() {
for (i=0; i<vegetales.length; i++) {
if (vegetales[i] !== '') {
outputArr.push(fruits[i]);
}
}
console.log(outputArr);
}
myFunction();