我有两个不同的json数组来连接。
var json_1 = [{
acceleration: 15,
cylinders: 4,
displacement: 98,
horsepower: 80,
id: 90,
model_year: 72,
mpg: 28,
name: "dodge colt (sw)",
origin: 1,
weight: 2164
}, {
acceleration: 14,
cylinders: 8,
displacement: 307,
horsepower: 130,
id: 80,
model_year: 72,
mpg: 13,
name: "chevrolet chevelle concours (sw)",
origin: 1,
weight: 4098
}];
var json_2 = [{
color: 'name',
number: "id",
x: "cylinders",
y: "horsepower"
}];
接下来我将json_1和json_2连接起来。
$.concat||$.extend({concat:function(b,c){var a=[];
for(x in arguments)a=a.concat(arguments[x]);return a;}});
var data = $.concat(json_1, json_2);
现在非常有趣。我想使用json_2中的key值来获取数据的值。 首先,我定义了varisble一种颜色
var color = data[data.length - 1].color;
结果我可以看到
console.log("RESULT!!!! value from color is name", data.map(function(d) {
return d[color];
})); // solution ["dodge colt (sw)", "chevrolet chevelle concours (sw)"]
我的问题是,如何更聪明地写var color = data[data.length - 1].color;
以获得解决方案["dodge colt (sw)", "chevrolet chevelle concours (sw)"]
答案 0 :(得分:1)
您应该使用jQuery.parseJSON()来解析您的JSON字符串。
var jsonObj = $.parseJSON(''); // Insert your JSON string
var color = jsonObj.color;
答案 1 :(得分:1)
我认为你不需要concat
,如果你使用像这样的对象
var obj = {data:json_1, aliases:json_2[0]}
而不是
var color = obj.aliases.color;
obj.data.map(function(d) {
return d[color];
}) // solution ["dodge colt (sw)", "chevrolet chevelle concours (sw)"]
但如果你仍然想使用concat
,你可以做这样的事情
data.map(function(d) {
return d[color];
}).filter(function(_){return _ !== undefined})); // solution ["dodge colt (sw)", "chevrolet chevelle concours (sw)"]
或
data.slice(0,data.length-1).map(function(d) {
return d[color];
}) // solution ["dodge colt (sw)", "chevrolet chevelle concours (sw)"]