Javascript JSON中的嵌套键/值结构
我从服务中获得以下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" } ] } 我需要一个函数,它作为参数,
{
"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');