繁体   English   中英

如何从嵌套的JSON中获取键值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM