根据另一个数组的空元素从数组中删除元素

时间:2017-05-07 18:40:13

标签: javascript arrays javascript-objects

我想只在另一个数组中存在空元素时才从数组中删除元素。我有这个:

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();

3 个答案:

答案 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)

我认为你混淆了,因为你在循环时改变了数组的长度。此解决方案使用第三个数组来推送结果,而无需更改原始数组。

另外,一些快速提醒:

  1. 仅使用for...in迭代对象键/值对 - 否则使用标准for循环。
  2. 不要忘记用var语句声明你的变量 - 否则你将污染全局命名空间。
  3. 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();