使用foreach在数组中推送值

时间:2016-12-08 19:44:58

标签: javascript html arrays node.js

这是我的输入

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

6 个答案:

答案 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)

您可以迭代给定的字符串,拆分它们并将值分配给数组中的对象。

&#13;
&#13;
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;
&#13;
&#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之类的东西来生成已编译的数组。

&#13;
&#13;
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;
&#13;
&#13;