Javascript 使用nodejs查找对象数组中的特定键值
我们有一个JSON对象,比如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": [{ "
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}
我投票认为这是因为它优化了,不会做不必要的循环。我投票认为这是因为它优化了,不会做不必要的循环。