2016-06-17 3 views
-2

を使用して他の配列でフィルタリングした後、配列内の要素を検索する方法は簡単です。配列内の他の要素で要素を分割できない場合、どのように配列内の要素を取り出すことができますか?例えば= arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]collection =[2,3,5,7]、結果はresult =[11,13]Javascript>

だろう私は、このコードを試してみましたが、それは

for(var i=0; i<arr.length;i++){ 
    for (var j=0; j<collection.length; j++){ 
     if (arr[i]/collection[j] === 0){ 
     arr.splice(i,1); 
     } 
    } 
    } 
+0

を数字 – Owennn

+0

配列や返される素数の中で他のもので分けられない数を返したいですか? – JordanHendrix

+0

@JordanHendrix配列内の他のもので分けることのできない数字 – Owennn

答えて

2

にこの

1のようなものを返す場合

if (!(arr[i]%collection[j] === 0)){ 
    newarr.push(arr[i]) 
    } 

が 編集することができますし、 forEach

var arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; 

var collection =[2,3,5,7]; 


function notDivided(arr1, arr2) { 

    return arr1.filter(function(item) { 
     var can_be_divided = false; 
     arr2.forEach(function(item_to_divide) { 
      if (item % item_to_divide === 0) can_be_divided = true; 
     }); 
     return !can_be_divided; 
    }); 

} 

var new_array = notDivided(arr,collection); 

console.log(new_array); 

2)フィルタ一部(@ torazaburoの提案)

function notDivided(arr1, arr2) { 

    return arr1.filter(function(item) { 
     return !arr2.some(function(item_to_divide) { 
      return (item % item_to_divide === 0); 
     }); 
    }); 

} 

それとも、まだ、矢印機能使用して使用した:これは実際に総理を見つけようとしている、よく

notDivided = (arr1, arr2) => arr1.filter((item) => !arr2.some((item_to_divide) => item % item_to_divide === 0)); 
+0

'forEach'を' some'を使うのではなく、なぜ外部変数で使っているのですか? 'return arr2.some(item_to_divide => !(アイテム%item_to_divide)) '? –

+0

@torazaburo、そうですよ!更新しました!ありがとう – mrlew

0

結果

使用%記号を収集するために、新しい配列を宣言し動作しませんでした

例を確認するために、4%= 0 2

この平均4は2で割ることができるbecau SE結果が0であるので、あなたはフィルタを使用して)あなた、ここで考えるなしたいの例では、投稿何あまりに

var arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; 
var collection =[2,3,5,7]; 
var newarr=[]; 
var addtonew = 0; 

for(var i=0; i < arr.length; i++){ 
    addtonew = -1; 
    for (var j=0; j<collection.length; j++){ 
    if (arr[i]%collection[j] === 0) 
    { 
     addtonew = -1; 
     break; 
    } 
    addtonew = arr[i]; 
    } 
if (addtonew > -1) 
    newarr.push(addtonew); 
} 

#[11, 13]