Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果对象位于多个对象的数组中,如何签入JavaScript?_Javascript_Arrays_Loops_Object - Fatal编程技术网

如果对象位于多个对象的数组中,如何签入JavaScript?

如果对象位于多个对象的数组中,如何签入JavaScript?,javascript,arrays,loops,object,Javascript,Arrays,Loops,Object,我有一个数组,其中有多个对象作为条目(集合),我想检查这些单个条目对象中是否有另一个源对象。如果是这样,我想返回一个数组,其中包含满足该条件的所有对象。以下是代码和示例: function whatIsInAName(collection, source) { var arr = []; var sourceEntries = Object.entries(source); for (var i = 0; i < collection.length; i++) {

我有一个数组,其中有多个对象作为条目(集合),我想检查这些单个条目对象中是否有另一个源对象。如果是这样,我想返回一个数组,其中包含满足该条件的所有对象。以下是代码和示例:

function whatIsInAName(collection, source) {
    var arr = [];
    var sourceEntries = Object.entries(source);
    for (var i = 0; i < collection.length; i++) {
        for (var j = 0; i < sourceEntries.length; i ++) {
            if((collection[i].hasOwnProperty(sourceEntries[j][0]))) {
                if(collection[i][sourceEntries[j][0]] == sourceEntries[j][1]) {
                    /*what happens here*/
                }
            }
        arr.push(collection[i]);
        }

    }
    return arr;
}

print(whatIsInAName([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 }));
函数whatisiname(集合,源){
var-arr=[];
var sourceEntries=Object.entries(源);
对于(变量i=0;i
显然,我不知道写在哪里(“这里发生了什么”)。问题基本上是第二个for循环和两个if条件必须是
true
,因此push命令是有意义的

我感谢任何提示或帮助,谢谢


另外,我知道这可能不是解决这个问题的最优雅的方法,所以对任何其他解决方案都很满意。

这就是内置功能派上用场的地方:

函数whatisiname(集合,源){
返回集合。筛选器((obj)=>{
for(源中的var prop){
if(源[prop]!==obj[prop]){
//在obj中找不到源属性-不好!
返回false;
}
//源属性与obj的一个属性匹配-继续!
}
//通过了检查!你有一根火柴!
返回true;
});
}
console.log(whatisiname([{
“a”:1,
“b”:2
}, {
“a”:1
}, {
“a”:1,
“b”:2,
“c”:2
}], {
“a”:1,
“b”:2

}));你能给出一个输入和输出示例吗?我想这会帮助别人准确地了解你需要什么。我的意思是,根据你真正想要的彻底程度,你可以测试一下
JSON.stringify(数组中的项目)==JSON.stringify(搜索对象)
当然,@ArnavAggarwal!所以基本上,print语句中的内容是输入,输出应该是:
[{“a”:1,“b”:2},{“a”:1,“b”:2,“c”:3}]
,因为这两个对象同时包含“a”和“b”。谢谢,@j-titus以一种平滑而优雅的方式来解决它。非常感谢!