我想从两个简单的数组中获得创建的对象数组:
const array1 = [20, 2, 35, 86]
const array2 = [8, 86, 15, 23, 35, 44]
预期结果:
const result = [
{ id: 20, value: false },
{ id: 2, value: false },
{ id: 35, value: true },
{ id: 86, value: true },
];
array1的长度很重要。因此,我需要在两个数组中找到匹配的值,如预期结果所示。
非常感谢您的帮助。
答案 0 :(得分:3)
您可以将地图与包含项结合使用
array1.map(i => ({id: i, value: array2.includes(i)}))
答案 1 :(得分:1)
应该很简单。使用Array.map
遍历第一个数组并返回一个对象。
const array1 = [20, 2, 35, 86]
const array2 = [8, 86, 15, 23, 35, 44]
const result = array1.map(i => ({ id: i, value: array2.includes(i) }))
console.log(result)
答案 2 :(得分:1)
从第二个数组创建一个集合:
const a2set = new Set(array2);
然后映射您的第一个数组:
array1.map(v1 => ({id:v1, value: a2set.has(v1)}))
答案 3 :(得分:0)
针对第一个数组启动循环,然后检查该元素是否存在于第二个数组中。
如果元素存在,则将其推入包含带有标志true或false的对象的数组。
const array1 = [20, 2, 35, 86]
const array2 = [8, 86, 15, 23, 35, 44]
var objArray = []
array1.forEach(function(elem){
objArray.push({
id : elem,
value : array2.indexOf(elem) != -1 ? true : false
});
});
console.log(objArray);
答案 4 :(得分:0)
您可以使用数组indexOf
查找项目是否在第二个数组内。
const array1 = [20, 2, 35, 86];
const array2 = [8, 86, 15, 23, 35, 44];
let output = [];
array1.forEach((number) => {
output.push({
id: number,
value: array2.indexOf(number) !== -1
});
});
console.log(output);
答案 5 :(得分:0)
尝试一个简单的for循环:
const array1 = [20, 2, 35, 86];
const array2 = [8, 86, 15, 23, 35, 44];
var res = [];
for (var i = 0; i < array1.length; i++) {
if (array2.includes(array1[i])) {
res.push({ id: array1[i], value: true });
} else {
res.push({ id: array1[i], value: false });
}
}
console.log(res);
答案 6 :(得分:0)
尝试以下方法。如果性能很重要,或者数组可能包含大量元素,我会考虑使用set以获得更好的查找性能。
const array1 = [20, 2, 35, 86]
const array2 = [8, 86, 15, 23, 35, 44]
const result = array1.map(element => {
return {
id: element,
value: array2.includes(element)
};
})