2016-12-08 28 views
0

这里推进内部数组值是我输入使用的foreach

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

回答

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);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

它显示a.split不是一个功能 –

+1

您正在运行循环9次。无论其他人在哪里运行3次只有 – Mahi

+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] }) 
} 

这当然如果数组都是一样只能长度为

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>

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] }); 

但对于一个更通用的解决方案,假设你的逗号SEPP arated字符串将始终匹配长度

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] }); 
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);

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);