我从JSP获得了JSON对象数组
"Titles":[
{
"Book3" : "BULLETIN 3"
}
,
{
"Book1" : "BULLETIN 1"
}
,
{
"Book2" : "BULLETIN 2"
}
]
Run Code Online (Sandbox Code Playgroud)
在JS方面,它被解析,我看到一个包含3个对象的数组.现在,我想在传递String键时找到/识别一个值.
例如,当我通过"Book2"时,我应该得到"BULLETIN 2"的价值.有人可以帮我确定方法吗?
试试这个
var data = {
"Titles": [{
"Book3": "BULLETIN 3"
}, {
"Book1": "BULLETIN 1"
}, {
"Book2": "BULLETIN 2"
}]
};
function getValueByKey(key, data) {
var i, len = data.length;
for (i = 0; i < len; i++) {
if (data[i] && data[i].hasOwnProperty(key)) {
return data[i][key];
}
}
return -1;
}
console.log(getValueByKey('Book2', data.Titles));Run Code Online (Sandbox Code Playgroud)
有:
var x = [{
"Book3" : "BULLETIN 3"
}, {
"Book1" : "BULLETIN 1"
}, {
"Book2" : "BULLETIN 2"
}];
Run Code Online (Sandbox Code Playgroud)
和
var key = "Book1";
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法获取值:
x.filter(function(value) {
return value.hasOwnProperty(key); // Get only elements, which have such a key
}).shift()[key]; // Get actual value of first element with such a key
Run Code Online (Sandbox Code Playgroud)
请注意,如果对象没有定义这样的键,它将抛出异常.
此外,如果有更多具有此类键的对象,则仅返回第一个对象.如果需要从具有此键的对象获取所有值,则可以执行以下操作:
x.filter(function(value) {
return value.hasOwnProperty(key); // Get only elements, which have such a key
}).map(function(value) {
return value[key]; // Extract the values only
});
Run Code Online (Sandbox Code Playgroud)
这将为您提供仅包含适当值的数组.
此外,如果您正在使用jQuery,您可以使用grep而不是filter:
jQuery.grep(x, function(value) {
return value.hasOwnProperty(key);
}) /* and so on */;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47558 次 |
| 最近记录: |