我有2个数组,一个数组有10个元素,另一个数组3个,我需要创建一个与最大向量大小相同的新数组,并在数组中存在某个元素的位置进行布尔检查true 3个元素
我有以下数组
array1 = [1,2,3,4,5,6,7,8,9,10]
array2 = [4,6,10]
我尝试制作2个循环
for(var i=0; i<array1.lenght; i++){
for(var j=0; i<array2.lenght; i++){
if(array1[i]==array2[j]){
array3.push(true)
}else{
array3.push(false)
}
}
}
我需要的载体
array3 = [false, false, false, true, false, true, false, false, false, true]
答案 0 :(得分:2)
将map
像这样与shift
一起使用:
const array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const array2 = [4, 6, 10];
const array3 = array1.map(e => {
if (array2[0] == e) {
array2.shift();
return true;
}
return false;
});
console.log(array3);
.as-console-wrapper { max-height: 100% !important; top: auto; }
如果只想对元素是否在数组中而不是顺序进行基本检查,请使用includes
。
const array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const array2 = [4, 6, 10];
const array3 = array1.map(e => array2.includes(e));
console.log(array3);
.as-console-wrapper { max-height: 100% !important; top: auto; }
答案 1 :(得分:2)
您可以forEach
第一个数组,并使用include
方法检查数组中是否存在项
let array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let array2 = [4, 6, 10];
let array3 = [];
array1.forEach(function (c) {
if (array2.includes(c)) {
array3.push(true)
} else {
array3.push(false);
}
})
console.log(array3)
答案 2 :(得分:1)
您也可以代替Set,然后Array.map而不是另一个数组,首先检查值是否在Set中:
let array1 = [1,2,3,4,5,6,7,8,9,10],
set = new Set([4,6,10])
let result = array1.map(x => set.has(x))
console.log(result)
答案 3 :(得分:0)
我建议保持简单,并使用Array#indexOf方法来确定数组是否包含另一个元素。
const array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const array2 = [4, 6, 10];
const b = array1.map(el => {
return array2.indexOf(el) !== -1;
});
console.log(b);
答案 4 :(得分:0)
const array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const array2 = [4, 6, 10];
const finalArray = [];
for (let data of array1) {
finalArray.push(array2.includes(data));
}