Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Arrays 使用另一个JSON数组节点js搜索JSON数组_Arrays_Node.js - Fatal编程技术网

Arrays 使用另一个JSON数组节点js搜索JSON数组

Arrays 使用另一个JSON数组节点js搜索JSON数组,arrays,node.js,Arrays,Node.js,我正在尝试使用另一个JSON数组条件(filter)过滤JSON数组 这是我的密码: function filterArray(object, criteria){ return object.filter(function(obj){ for(var i=0;i<criteria.length;i++){ let criteriaEle = criteria[i]; return Object.keys(criter

我正在尝试使用另一个JSON数组条件(filter)过滤JSON数组

这是我的密码:

function filterArray(object, criteria){
    return object.filter(function(obj){
        for(var i=0;i<criteria.length;i++){
            let criteriaEle = criteria[i];
            return Object.keys(criteriaEle).forEach(function(key){
                if(obj[key] == criteriaEle[key]){
                    return obj;
                }
            })
        }
    })
}
因此,如果我将这两个数组赋给函数,它应该返回

obj = [{{type:1,company:1,color:0,name:a},{type:1,company:1,color:1,name:e}}]
我不知道我在这方面哪里出了问题。请帮忙

更新: 此外,我不想使用obj.type或obj.company或object.color作为参数进行搜索,因为我想使代码可维护,并且不想在以后添加更多条件时再更新代码

const data=[{type:1,company:1,color:0,name:'a'},{type:2,company:1,color:0,name:'b'},{type:1,company:3,color:0,name:'c'},{type:4,company:1,color:0,name:'d'},{type:1,company:1,name:'e'}];
const-criteria=[{type:1,company:1,color:0},{type:1,company:1,color:1}];
功能检查标准(obj){
返回条件。一些(条件=>{
for(常量输入标准){
if(标准[键]!==obj[键]){
返回false;
}
}
返回true;
});
}
const filtered=data.filter(检查条件);

log('filteredarray:',Filtered)如何使用下划线.js?您可以在此处使用
where
功能:@HannahMay它不允许您在语句中使用逻辑OR。很抱歉,我没有写下我希望我的代码可以从配置中配置。所以我不想做“obj.type”或“obj.company”,因为这使我很难维护。@AnuragBhardwaj更新了解决方案。我不熟悉Array.filter,并试图理解如果我必须将criteria对象从data.filter(checkCriteria)传递到函数checkCriteria(obj),我该怎么做?@AnuragBhardwaj您不能更改传递到Array.filter的函数的签名,但是,您可以动态创建函数并选择该函数闭包的一部分。我用另一个片段更新了答案,正是这样做的。请注意,这一次,我不是将函数传递给Array.filter,而是执行一个返回函数的函数。
obj = [{{type:1,company:1,color:0,name:a},{type:1,company:1,color:1,name:e}}]