javascript如何从两个对象数组中查找?

javascript如何从两个对象数组中查找?,javascript,arrays,Javascript,Arrays,我有两个数组对象 var data=[{m:1},{m:2},{m:3},{m:4},{m:5},{m:6},{m:7},{m:8},{m:9},{m:10},{m:11},{m:12}]; var file=[{m:1},{m:3}]; 我想得到像[true,false,false,true,false,false,false,false,false,false,false,false,false]这样的数组。 注意:在这个ayyar中,如果它与数据数组对象中的文件数组对象匹配,它将返回

我有两个数组对象

 var data=[{m:1},{m:2},{m:3},{m:4},{m:5},{m:6},{m:7},{m:8},{m:9},{m:10},{m:11},{m:12}];
 var file=[{m:1},{m:3}];
我想得到像
[true,false,false,true,false,false,false,false,false,false,false,false,false]这样的数组。

注意:在这个ayyar中,如果它与数据数组对象中的文件数组对象匹配,它将返回true

我尝试了,但我无法实现我的结果。

使用和:

let data=[{m:1}、{m:2}、{m:3}、{m:4}、{m:5}、{m:6}、{m:7}、{m:8}、{m:9}、{m:10}、{m:11}、{m:12}];
让file=[{m:1},{m:3}];
让result=data.map(d=>file.some(f=>f.m==d.m));

控制台日志(结果)您可以使用哈希表并映射事件

var data=[{m:1}、{m:2}、{m:3}、{m:4}、{m:5}、{m:6}、{m:7}、{m:8}、{m:9}、{m:10}、{m:11}、{m:12}],
file=[{m:1},{m:3}],
hash=Object.create(null),
结果;
file.forEach(函数(a){
hash[a.m]=真;
});
结果=data.map(函数(a){
返回散列[a.m]| | false;
});
控制台日志(结果)
.as控制台包装{max height:100%!重要;top:0;}
试试这个

var data=[{m:1}、{m:2}、{m:3}、{m:4}、{m:5}、{m:6}、{m:7}、{m:8}、{m:9}、{m:10}、{m:11}、{m:12}];
var文件=[{m:1},{m:3}];
var re=[];

对于(var i=0;i有趣的是,它在ES6中变得如此之小

在这里,
file.map(val=>val.m)
将给我一个数字数组。
[1,3]
我使用它来查找它是否包含当前对象的
m
属性

var data=[{m:1}、{m:2}、{m:3}、{m:4}、{m:5}、{m:6}、{m:7}、{m:8}、{m:9}、{m:10}、{m:11}、{m:12}];
var文件=[{m:1},{m:3}];
var selection=file.map(val=>val.m)
var arr=data.map(obj=>selection.includes(obj.m))
console.log(arr)
var data=[{m:1}、{m:2}、{m:3}、{m:4}、{m:5}、{m:6}、{m:7}、{m:8}、{m:9}、{m:10}、{m:11}、{m:12}];
var文件=[{m:1},{m:3}];
var结果=[];
函数删除重复项(数据、文件){
对于(var i=0,len=data.length;i
您的预期结果是错误的,它应该是:
[真,假,真,假,假,假,假,假,假,假]
查找表/集合肯定比我的方法快,尤其是当列表变长+1时。我不是下选者,但你的答案中只有一个是真的,与OP的预期输出不匹配。对于每次数据迭代,你都会生成一个新数组进行查找。@NinaScholz也许我应该先创建它,然后在InI中使用它de?或一组,如我的回答中所示。@NinaScholz好的,知道了,+1,但如何学习/知道哪一种方法更快?你怎么做?
var data = [{m:1},{m:2},{m:3},{m:4},{m:5},{m:6},{m:7},{m:8},{m:9},{m:10},{m:11},{m:12}];
var file = [{m:1},{m:3}];

var result = [];

function remove_duplicates(data, file) {
    for (var i = 0, len = data.length; i < len; i++) { 
        for (var j = 0, len2 = file.length; j < len2; j++) { 
            if (data[i].m === file[j].m) {
                result.push("true")
            }else{
            result.push("false")
            }
        }
    }
console.log(result)
}

remove_duplicates(data,file);