比较2个数组并检查位置

时间:2019-06-16 23:33:20

标签: javascript arrays algorithm

我有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]

5 个答案:

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