Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 使用nodejs查找对象数组中的特定键值_Javascript_Arrays_Json_Node.js_Lodash - Fatal编程技术网

Javascript 使用nodejs查找对象数组中的特定键值

Javascript 使用nodejs查找对象数组中的特定键值,javascript,arrays,json,node.js,lodash,Javascript,Arrays,Json,Node.js,Lodash,我们有一个JSON对象,比如 var jsons = { "LAPTOP": [{ "productId": "123" }], "DESKTOP": [{ "productId": "456" }], "MOUSE": [{ "productId": "789" }, { "productId": "012" }], "KEY-BOARD": [{ "

我们有一个JSON对象,比如

var jsons = {
    "LAPTOP": [{
        "productId": "123"
    }],
    "DESKTOP": [{
        "productId": "456"
    }],
    "MOUSE": [{
        "productId": "789"
    }, {
        "productId": "012"
    }],
    "KEY-BOARD": [{
        "productId": "345"
    }]
}
如果我们搜索
{“productId”:“012”}
它应该返回key DESKTOP
如果我们可以使用lodash,而不使用lodash,那就太好了。你可以得到这样的东西

var toSearch = 789;
Object.keys(jsons).forEach((key) => {
  if(jsons[key].find((pid) => pid.productId == toSearch)){
    console.log(key)
  }
})

如果没有LODASH,你可以得到这样的东西

var toSearch = 789;
Object.keys(jsons).forEach((key) => {
  if(jsons[key].find((pid) => pid.productId == toSearch)){
    console.log(key)
  }
})
试试这个
var jsons={
“笔记本电脑”:[{
“productId”:“123”
}],
“桌面”:[{
“产品ID”:“456”
}],
“鼠标”:[{
“产品ID”:“789”
}, {
“产品ID”:“012”
}],
“键盘”:[{
“产品ID”:“345”
}]};
var result=Object.keys(json).find((key)=>{
返回jsons[key].find((item)=>item.productId===“123”)
});
控制台日志(结果);
试试这个
var jsons={
“笔记本电脑”:[{
“productId”:“123”
}],
“桌面”:[{
“产品ID”:“456”
}],
“鼠标”:[{
“产品ID”:“789”
}, {
“产品ID”:“012”
}],
“键盘”:[{
“产品ID”:“345”
}]};
var result=Object.keys(json).find((key)=>{
返回jsons[key].find((item)=>item.productId===“123”)
});
控制台日志(结果);
var jsons={
“笔记本电脑”:[{
“productId”:“123”
}],
“桌面”:[{
“产品ID”:“456”
}],
“鼠标”:[{
“产品ID”:“789”
}, {
“产品ID”:“012”
}],
“键盘”:[{
“产品ID”:“345”
}]
};
var id=“789”;
用于(JSON中的项目){
jsons[item].forEach(函数(数据){
if(data.productId==id){
控制台日志(项目);
}
});
}
var jsons={
“笔记本电脑”:[{
“productId”:“123”
}],
“桌面”:[{
“产品ID”:“456”
}],
“鼠标”:[{
“产品ID”:“789”
}, {
“产品ID”:“012”
}],
“键盘”:[{
“产品ID”:“345”
}]
};
var id=“789”;
用于(JSON中的项目){
jsons[item].forEach(函数(数据){
if(data.productId==id){
控制台日志(项目);
}
});

}
您可以使用Javascript的
键输入对象
进行循环语法,如下所示:

var jsons={
“笔记本电脑”:[{
“productId”:“123”
}],
“桌面”:[{
“产品ID”:“456”
}],
“鼠标”:[{
“产品ID”:“789”
}],
“键盘”:[{
“产品ID”:“345”
}]};
var searchFor=“789”;
for(json中的var键)
if(jsons.hasOwnProperty(key))
if(jsons[key][0]&&jsons[key][0].productId==searchFor)

警报(键);//鼠标
可以使用Javascript的
键输入对象
进行循环语法,如下所示:

var jsons={
“笔记本电脑”:[{
“productId”:“123”
}],
“桌面”:[{
“产品ID”:“456”
}],
“鼠标”:[{
“产品ID”:“789”
}],
“键盘”:[{
“产品ID”:“345”
}]};
var searchFor=“789”;
for(json中的var键)
if(jsons.hasOwnProperty(key))
if(jsons[key][0]&&jsons[key][0].productId==searchFor)

警报(键);//鼠标
使用lodash的解决方案:

let result = _(jsons)
    .pickBy(item => _.some(item, {productId: '123'}))
    .keys()
    .head();

首先,我们找到值包含的键和具有匹配productId的对象。然后,我们从密钥集合中获取第一个密钥。

使用lodash的解决方案:

let result = _(jsons)
    .pickBy(item => _.some(item, {productId: '123'}))
    .keys()
    .head();

首先,我们找到值包含的键和具有匹配productId的对象。然后,我们从密钥集合中提取第一个密钥。

您可以使用
密钥
查找

var jsons={“笔记本电脑”:[{“产品ID”:“123”}],“桌面”:[{“产品ID”:“456”}],“鼠标”:[{“产品ID”:“789”},{“产品ID”:“012”}],“键盘”:[{“产品ID”:“345”}],
值={“productId”:“012”};
var result=\.find(\.keys(json),key=>\.find(jsons[key],value));
控制台日志(结果)

您可以使用
查找

var jsons={“笔记本电脑”:[{“产品ID”:“123”}],“桌面”:[{“产品ID”:“456”}],“鼠标”:[{“产品ID”:“789”},{“产品ID”:“012”}],“键盘”:[{“产品ID”:“345”}],
值={“productId”:“012”};
var result=\.find(\.keys(json),key=>\.find(jsons[key],value));
控制台日志(结果)
考虑使用。只要你把头绕在它身上,它就会很强大

//const objectScan=require('object-scan');
常量搜索=(术语,输入)=>{
常量r=objectScan(['**.productId']{
中止:对,
rtn:'键',
filterFn:({value})=>value==term
})(输入);
返回r==未定义?r:r[0];
};
const jsons={笔记本电脑:[{productId:'123'}],桌面:[{productId:'456'}],鼠标:[{productId:'789'},{productId:'012'}],'KEY-BOARD':[{productId:'345'}];
console.log(搜索('012',jsons));
//=>鼠标
。作为控制台包装{最大高度:100%!重要;顶部:0}
考虑使用。只要你把头绕在它身上,它就会很强大

//const objectScan=require('object-scan');
常量搜索=(术语,输入)=>{
常量r=objectScan(['**.productId']{
中止:对,
rtn:'键',
filterFn:({value})=>value==term
})(输入);
返回r==未定义?r:r[0];
};
const jsons={笔记本电脑:[{productId:'123'}],桌面:[{productId:'456'}],鼠标:[{productId:'789'},{productId:'012'}],'KEY-BOARD':[{productId:'345'}];
console.log(搜索('012',jsons));
//=>鼠标
。作为控制台包装{最大高度:100%!重要;顶部:0}

我投票认为这是因为它优化了,不会做不必要的循环。我投票认为这是因为它优化了,不会做不必要的循环。