简体   繁体   中英

How to convert arrays into an array of objects

Hi I'm trying to make an array of objects from several arrays.This is probably a very basic question, but I didn't find a proper way of doing it from searching online. :(

The original data I've got is

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

What I want to achieve is an array like :

data = [object1, object2,.....]

Each object is made of :

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

my current code is a bit messy, which only return me an empty value of each key:

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

});

Assuming all your arrays have the same size:

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

You could use something like below;

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

... this uses the map() Array method , and assumes that all the arrays are the same length...

This?

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/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM