如何使用Javascript>在其他数组过滤后检索数组中的元素

时间:2016-06-17 03:18:26

标签: javascript arrays

只是一个简单的问题。如果元素不能被数组中的其他元素分割,我如何检索数组中的元素?例如= arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]collection =[2,3,5,7],结果将是result =[11,13]

我已尝试使用此代码,但它无效

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

2 个答案:

答案 0 :(得分:2)

像这样的东西

1)使用过滤器 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 ) );

答案 1 :(得分:0)

声明新数组以收集结果

使用%符号检查

示例4%2 = 0

这个均值4可以除以2,因为结果是0所以你可以做

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

编辑 如果你想成为一个没有想到的例子,那么回复你发布的内容

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]