很抱歉,一个简单的问题,但我关注的是性能影响(javascript): 我有一个JSON查询结果:
[{'name':'a'},{'name':'b'}]
为了准备另一个查询,我需要将其操作为以下内容:
['a','b']
最有效的方式是什么? 是通过本机JSON库还是使用简单的JSON /字符串解析?
由于
答案 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);
答案 2 :(得分:0)
只是看一下这些性能测试,我很乐意使用map
,因为它似乎在最好的情况下出现,甚至在很多情况下都超过了本地for-loop
。这在很大程度上取决于浏览器的afaik。与原生for-loop
和map
相比,像下划线和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;
});