只是一个简单的问题。如果元素不能被数组中的其他元素分割,我如何检索数组中的元素?例如= 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);
}
}
}
答案 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]