[英]How to get key values from nested JSON?
我有这个JSON:
var json = [{'range':'2012','subtotal':'116.0','total_tax':'11.6','total':'127.6'},{'range':'2013','subtotal':'936.0','total_tax':'93.6','total':'1029.6'},{'range':'2014','subtotal':'368.0','total_tax':'36.8','total':'404.8'},{'range':'2015','subtotal':'267.0','total_tax':'26.7','total':'293.7'}];
如何将其转换为这样的范围数组(使用Javascript或jQuery):
['2012', '2013', '2014', '2015']
谢谢你的帮助。
你可以简单地使用.map
:
json.map(function(i) {
return i.range;
});
//["2012", "2013", "2014", "2015"]
var mapped = json.map(function(obj) {
return obj.range;
});
还有,小点; 你拥有的是一个数组。 JSON是指一个数组/对象表示为一个字符串(恰好与它的JavaScript文字符号相匹配)
首先,那不是JSON,这是一个JavaScript对象文字。 我将您的数据称为data
而不是json
。
其次,让我们使用两个可重用的函数来更清楚地表达我们的意图
let map = f => x => x.map(f);
let prop = y => x => x[y];
现在,我们只是映射您的数据并提取我们想要的属性
map(prop('range'))(data);
// => ["2012","2013","2014","2015"]
或者我们可以定义一个可重用的帮助器
let getRange = map(prop('range'));
getRange(data);
// => ["2012","2013","2014","2015"]
这是ES5的等价物
var map = function map(f) {
return function (x) {
return x.map(f);
};
};
var prop = function prop(y) {
return function (x) {
return x[y];
};
};
var getRange = map(prop('range'));
getRange(data);
// => ["2012","2013","2014","2015"]
实际上,您有一组嵌套对象。 以下是一些选项:
天真的解决方案是遍历此数组并将所需的值推送到新数组:
function getRange(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
result.push(arr[i].range)
};
return result;
}
您还可以使用本机Array.map方法更轻松地执行此操作:
function getRange(arr) {
return arr.map(function(elem) {
return i.range;
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.