如何将数组转换为对象数组

时间:2014-12-08 13:25:05

标签: javascript arrays object

您好我试图从几个阵列中创建一个对象数组。这可能是一个非常基本的问题,但我没有找到一种正确的方法来在线搜索。 :(

我得到的原始数据是

valueYes = [15,30,22,18,2,6,38,18];
valueNo = [23,75,45,12,45,9,17,23];
valueNotSure = [1,-1,1,1,-1,-1,-1,1];

我想要实现的是一个像:

这样的数组
data = [object1, object2,.....]

每个对象都由:

组成
object1 = {valueYes:15, valueNo:23,valueNotSure:1}
object2 = {valueYes:30, valueNo:75,valueNotSure:-1}
.......

我当前的代码有点乱,只返回每个键的空值:

valueYes = [15,30,22,18,2,6,38,18];
valueNo = [23,75,45,12,45,9,17,23];
valueNotSure = [1,-1,1,1,-1,-1,-1,1];

var object1 = Object.create({}, { 
    myChoice: { value: function(myChoice) {for  (var i = 0; i < len; i++){return this.myChoice[i] = myChoice[i];} } } 

});

3 个答案:

答案 0 :(得分:6)

假设您的所有阵列都具有相同的大小:

valueYes = [15,30,22,18,2,6,38,18];
valueNo = [23,75,45,12,45,9,17,23];
valueNotSure = [1,-1,1,1,-1,-1,-1,1];

var data = [];

for(var i = 0; i < valueYes.length; i++){
    data.push({
        valueYes: valueYes[i],
        valueNo: valueNo[i],
        valueNotSure: valueNotSure[i]
    });
}

答案 1 :(得分:3)

您可以使用以下内容;

var objs = valueYes.map(function (v, i) {
    return {
        valueYes: v,
        valueNo: valueNo[i],
        valueNotSure: valueNotSure[i]
    };
});

...这使用map() Array method,并假设所有数组都是相同的长度...

答案 2 :(得分:0)

此?

var valueYes = [15,30,22,18,2,6,38,18];
var valueNo = [23,75,45,12,45,9,17,23];
var valueNotSure = [1,-1,1,1,-1,-1,-1,1];

var data = [];
valueYes.forEach(function(item, index) {
    data.push({ valueYes: valueYes[index], valueNo: valueNo[index], valueNotSure: valueNotSure[index] });
});

console.log(data);

http://jsfiddle.net/chrisbenseler/9t1y1zhk/