这是我的输入
var id = '1,2,3';
var name = 'a,b,c';
var value = 'x,y,z';
我如何构建像这样的数组
[
{
"id" : "1",
"name" : "a",
"value" : "x",
}
,
{
"id" : "2",
"name" : "b",
"value" : "y",
}
,
{
"id" : "3",
"name" : "c",
"value" : "z",
}
]
我试过这个
var newArray = [];
newArray.push({'id':id,'name':name,'value':value })
但它给出了一个逗号分隔值的单个数组。
我该怎么做?请帮忙
注意:我更喜欢javascript
答案 0 :(得分:1)
您可以使用:
var id_split = id.split(',');
var name_split = name.split(',');
var value_split = value.split(',');
var newArray = [];
for(var i = 0; i < id_split.length; i++){
newArray.push({'id':id_split[i],'name':name_split[i],'value':value_split[i] })
}
这当然只有在数组长度相同的情况下才有效
答案 1 :(得分:1)
您可以迭代给定的字符串,拆分它们并将值分配给数组中的对象。
var id = '1,2,3',
name = 'a,b,c',
value = 'x,y,z',
keys = ['id', 'name', 'value'],
result = [];
[id, name, value].forEach(function (a, i) {
a.split(',').forEach(function (b, j) {
result[j] = result[j] || {};
result[j][keys[i]] = b;
});
});
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 2 :(得分:1)
如果您事先知道元素长度
var allIDs= '1,2,3';
var allNames= 'a,b,c';
var allValues= 'x,y,z';
var tmpArray = [];
for(var i=0;i<3;i++)
tmpArray.push(new {id: allIDs.split(',')[i] , name: allNames.split(',')[i], value: allValues.split(',')[i] });
但是对于更通用的解决方案,假设你的逗号sepparated字符串总是匹配
var allIDs= '1,2,3';
var allNames= 'a,b,c';
var allValues= 'x,y,z';
var tmpArray = [];
allIDs = allIDs.split(',');
allNames =allNames.split(',');
allValues = allValues.split(',');
for(var i=0;i<3;i++)
tmpArray.push(new {id: allIDs[i] , name: allNames[i], value: allValues[i] });
答案 3 :(得分:1)
我会这样做;
var id = '1,2,3'.split(","),
name = 'a,b,c'.split(","),
value = 'x,y,z'.split(","),
result = id.map((e,i) => ({id: e, name: name[i], value: value[i]}));
console.log(result);
答案 4 :(得分:0)
var id = '1,2,3';
var name = 'a,b,c';
var value = 'x,y,z';
$('.resultsDiv').html(JSON.stringify(yourFun()))
function yourFun() {
ida = id.split(',');
namea = name.split(',');
valuea = value.split(',');
var returnvar = [];
for (var i = 0; i < ida.length; i++) {
returnvar.push({
"id": ida[i],
"name": namea[i],
"value": valuea[i]
});
}
return returnvar;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="resultsDiv"></div>
答案 5 :(得分:0)
首先,只需将列表拆分为数组,然后就可以执行循环或使用map / reduce之类的东西来生成已编译的数组。
var id = '1,2,3';
var name = 'a,b,c';
var value = 'x,y,z';
var idArray = id.split(',');
var nameArray = name.split(',');
var valueArray = value.split(',');
var newArray = idArray.map((id,i) =>
({ id: id, name: nameArray[i], value: valueArray[i] })
);
console.log(newArray);
&#13;