解析JSON的有效方法

时间:2015-02-05 15:05:21

标签: javascript json

很抱歉,一个简单的问题,但我关注的是性能影响(javascript): 我有一个JSON查询结果:

  

[{'name':'a'},{'name':'b'}]

为了准备另一个查询,我需要将其操作为以下内容:

  

['a','b']

最有效的方式是什么? 是通过本机JSON库还是使用简单的JSON /字符串解析?

由于

3 个答案:

答案 0 :(得分:1)

使用forEach

var j = [{"name": "a"}, {"name": "b"}];
var k = [];

j.forEach(function (value) {
    k.push(value.name);
});

console.log(k); // Outputs ["a", "b"]

使用map

var j = [{"name": "a"}, {"name": "b"}];

var k = j.map(function(v) {

    return v.name;
});

console.log(k); // Outputs ["a", "b"]

答案 1 :(得分:0)

这是你可以做的一个选择

简单循环JSON数组,并将每个name项添加到新数组中。

var original = [{name: 'a'}, {name: 'b'}];
var newArr = [];

var total = original.length;
for(var i = 0;i < total;i++){
    newArr.push(original[i].name);   
}

console.log(newArr);

http://jsfiddle.net/satLzvhg/

答案 2 :(得分:0)

只是看一下这些性能测试,我很乐意使用map,因为它似乎在最好的情况下出现,甚至在很多情况下都超过了本地for-loop。这在很大程度上取决于浏览器的afaik。与原生for-loopmap相比,像下划线和lodash这样的库看起来很差。

如果您实际使用的是JS对象而不是JSON字符串:

var arr = [{name: 'a'}, {name: 'b'}];

var out = arr.map(function (el) {
  return el.name;
});

如果那是一串JSON,但您错误输入了问题:

var json = '[{"name":"a"},{"name":"b"}]';

var out = JSON.parse(json).map(function (el) {
  return el.name;
});