2017-05-07 13 views
0

他の配列の空の要素が存在する場合にのみ、配列から要素を削除します。他の配列の空要素に基づいて配列から要素を削除する

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

答えて

1

ループを繰り返しながら配列の長さを変更しているので、混乱していると思います。このソリューションは、元の配列を変更せずに結果をプッシュするために3番目の配列を使用します。また

、いくつかの簡単なリマインダ:

  1. 使用for...inのみオブジェクトのキー/値を反復処理pairs--そうでない場合は、標準forループを使用するため。
  2. 変数を宣言するのを忘れないでください。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();

+0

aniedおかげで、あなたの答えは私にとって非常に明確です。 – CarMoreno

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"] 

ラン:

私はこれを持っています

N.B:変更を行うことができます。

2

例ES6

使用Array.filterを使用し、三元で&&を使用して、それが

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)
012を必要としていないならば、私たちは elseと気にしないですることができます

2

対応するvegetalesアイテムの真偽値でフィルタリングできます。

var fruits = ["Banana", "Naranja", "Manzana", "Mango", "Fresa", "Limón", "Lima", "Sandia"]; 
 
    vegetales = ["", "Ajo", "", "Cebolla", "Tomate", "", "", "Zanahoria"], 
 
    newArray = fruits.filter((_, i) => vegetales[i]); 
 

 
console.log(newArray)

+0

スリック - さらに私を減らしました! –

関連する問題