从两个数组生成JSON

时间:2017-11-22 14:41:07

标签: javascript arrays json object

我必须使用相关的数组。

const unsigned char*

我是这样创建的,因为我在之前的步骤中需要唯一的ID,现在我必须在我绘制它们的图表中为每一对使用相同的颜色。

我的目标是使用以下格式生成一个字符串:

shortArray = ["ID-111", "ID-222"]
longArray = ["ID-111 bis", "ID-222 bis"]

我试着这样做:

{
    "ID-111 bis" : chart.color("ID-111"),
    "ID-222 bis" : chart.color("ID-222"),
    ...
}

这给了我错误的输出:

 const result = {}
 for(const item of longArray) {
    result[item]=[];
    result[item].push({item : "chart.color(" + shortArray+ ")"});
 }

任何想法我应该改变什么?

稍后编辑:

我看到许多非常相似的答案,但必须遵守一个条件:

第二个参数应该在引号中。

{ "ID-111 bis" :[{item: "chart.color(ID-111,ID-222)"}], "ID-222 bis" :[{item: "chart.color(ID-111,ID-222)"}] } - 好

"ID-111 bis" : chart.color("ID-111") - 糟糕

3 个答案:

答案 0 :(得分:1)

为什么要制作数组并将元素推入内部?如果你想获得如下布局:

{
    "ID-111 bis" : chart.color("ID-111"),
    "ID-222 bis" : chart.color("ID-222"),
    ...
}

只需删除[]部分。

 const result = {}
 for(const item of longArray) {
    result[item] = { "item" : "chart.color(" + shortArray+ ")"});
 }

答案 1 :(得分:1)

如果两个数组的长度相同:

shortArray = ["ID-111", "ID-222"]
longArray = ["ID-111 bis", "ID-222 bis"]

result = {}
for (var i = 0; i < longArray.length; i++) {
    result[ longArray[i] ] = "chart.color(" + shortArray[i] + ")";
}

https://jsfiddle.net/47qcrvqh/

答案 2 :(得分:1)

您可以使用数组的.reduce函数

var shortArray = ["ID-111", "ID-222"]
var longArray = ["ID-111 bis", "ID-222 bis"]

var result = longArray.reduce((res,key,index)=>{
   // Can call chart.color without quotes if that's requirement 
   res[key] = 'chart.color("'+shortArray[index]+'")';
   return res;
},{})

console.log(result)