Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 JSON中的嵌套键/值结构_Javascript_Json_Underscore.js_Lodash - Fatal编程技术网

Javascript JSON中的嵌套键/值结构

Javascript JSON中的嵌套键/值结构,javascript,json,underscore.js,lodash,Javascript,Json,Underscore.js,Lodash,我从服务中获得以下JSON结构: { "prop": [ { "key": "FOO", "value": "Foo is wonderfull, foo is great" }, { "key": "BAR", "value": "Bar is bad, really bad" } ] } 我需要一个函数,它作为参数,

我从服务中获得以下JSON结构:

{
    "prop": [
        {
            "key": "FOO",
            "value": "Foo is wonderfull, foo is great"
        },
        {
            "key": "BAR",
            "value": "Bar is bad, really bad"
        }
    ]
}

我需要一个函数,它作为参数,例如BAR,并输出“BAR是坏的,…”,我如何实现这一点?欢迎使用Lodash/下划线或VanillaJS。

我用JAVASCRIPT编写:

var d={
“道具”:[{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
}, {
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}]
}
obj=d;
parm='BAR'
对于(obj[“道具”]中的项目){
如果(parm==项['key']){
console.log(项['value'])
}

}
我正在用JAVASCRIPT编写它:

var d={
“道具”:[{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
}, {
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}]
}
obj=d;
parm='BAR'
对于(obj[“道具”]中的项目){
如果(parm==项['key']){
console.log(项['value'])
}
}
如果找到值,您可以使用并结束迭代

函数getValue(数组,键){
var值;
array.some(函数(a){
如果(a.key==key){
value=a.value;
返回true;
}
});
返回值;
}
var object={“prop”:[{“key”:“FOO”,“value”:“FOO是奇妙的,FOO是伟大的”},{“key”:“BAR”,“value”:“BAR是坏的,真的坏的”}]};
log(getValue(object.prop,'BAR')如果找到值,则可以使用并结束迭代

函数getValue(数组,键){
var值;
array.some(函数(a){
如果(a.key==key){
value=a.value;
返回true;
}
});
返回值;
}
var object={“prop”:[{“key”:“FOO”,“value”:“FOO是奇妙的,FOO是伟大的”},{“key”:“BAR”,“value”:“BAR是坏的,真的坏的”}]};

log(getValue(object.prop,'BAR')
您可以使用
数组。查找
以查找必要的对象,然后返回其值

var d={
“道具”:[{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
}, {
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}]
}
函数FindValue(值){
var_tmp=d.prop.find(函数(o){
返回o.key==值
});
返回_tmp?_tmp.value:“未找到对象”;
}
console.log(FindValue(“BAR”));
console.log(FindValue(“BAR1”));

log(FindValue(“FOO”)
您可以使用
数组。查找
以查找必要的对象,然后返回其值

var d={
“道具”:[{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
}, {
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}]
}
函数FindValue(值){
var_tmp=d.prop.find(函数(o){
返回o.key==值
});
返回_tmp?_tmp.value:“未找到对象”;
}
console.log(FindValue(“BAR”));
console.log(FindValue(“BAR1”));
log(FindValue(“FOO”)现代纯javascript:
注意:数组方法
.filter()
.map()
返回数组

老派的循环:
函数getValue(对象,keyValue){
var p=对象属性;
对于(var i=0;iModern纯javascript:
注意:数组方法
.filter()
.map()
返回数组

老派的循环:
函数getValue(对象,keyValue){
var p=对象属性;
对于(var i=0;i
但函数只返回第一个过滤对象的值

但是该函数将只返回第一个过滤对象的值;

您可以使用该函数通过键获取值

function getValueByKey(array, key) {
  return (_.find(array, { key: key }) || {}).value;
}

var result = getValueByKey(data.prop, 'BAR');
var数据={
“道具”:[
{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
},
{
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}
]
};
函数getValueByKey(数组,键){
返回(324;.find(数组,{key:key})|{}).value;
}
var结果=getValueByKey(data.prop,'BAR');
console.log(结果);
您可以使用按键获取值

function getValueByKey(array, key) {
  return (_.find(array, { key: key }) || {}).value;
}

var result = getValueByKey(data.prop, 'BAR');
var数据={
“道具”:[
{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
},
{
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}
]
};
函数getValueByKey(数组,键){
返回(324;.find(数组,{key:key})|{}).value;
}
var结果=getValueByKey(data.prop,'BAR');
console.log(结果);
简单

Lodash

var数据={
“道具”:[
{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
},
{
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}
]
}
函数getValueForKey(键){
返回u.result(u.find(data.prop,{key:key}),'value')| |“未知键:”+key;
}
编写(getValueForKey(“FOO”)+“
”; 编写(getValueForKey(“BAR”)+“
”; document.write(getValueForKey(“FOOBAR”);
简单

Lodash

var数据={
“道具”:[
{
“键”:“FOO”,
“价值”:“富是奇妙的,富是伟大的”
},
{
“键”:“条”,
“值”:“酒吧很糟糕,真的很糟糕”
}
]
}
函数getValueForKey(键){
返回u.result(u.find(data.prop,{key:key}),'value')| |“未知键:”+key;
}
编写(getValueForKey(“FOO”)+“
”; 编写(getValueForKey(“BAR”)+“
”; document.write(getValueForKey(“FOOBAR”);

您可以在
prop
数组上循环,并在每个迭代中获取
key
属性,将其与传递给函数的参数进行比较,如果匹配,则返回
value
属性。您可以在
prop
数组上循环,并在每个迭代中获取
key
属性,将其与传递给函数的参数,如果匹配,则返回
var filteredArray = { "prop": [{ "key": "FOO", "value": "Foo is wonderfull, foo is great" }, { "key": "BAR", "value": "Bar is bad, really bad" }] };
function getByKey(findKey,filteredArray){
    if(filteredArray.length){
            var result = filteredArray.filter(function(x){
                return x.key === findKey
            });
            if(result && result.length){return result[0].value}
    }
}
getByKey('BAR',filteredArray.prop)
function getValueByKey(array, key) {
  return (_.find(array, { key: key }) || {}).value;
}

var result = getValueByKey(data.prop, 'BAR');