Convert an array to key / value pairs

I entered different values ​​from nested loops into the object, resulting in something like this:

obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];

But I would like for him to return like this:

obj = [{"blue": 1}, {"red": 4}, {"yellow": 2}, {"green": 7}];

Do I need to manually create this syntax or is there a faster way?

+4
source share
5 answers

Use a simple loop.

var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];

var res = [];

for (var i = 0; i < obj.length; i += 2) {
  var o = {};
  o[obj[i]] = obj[i + 1];
  res.push(o);
}

console.log(res);
Run codeHide result

ES6 solution using the method Array.from().

let obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];

console.log(Array.from({ length: obj.length / 2 }, (_, i) => ({ [obj[2 * i]]: obj[2 * i + 1] })));
Run codeHide result
+2
source

Use a for loop to get the result, for example

var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];

var newObj = []
for(var i = 0; i < obj.length; i+=2) {
  var temp = {};
  temp[obj[i]] = obj[i + 1];
  newObj.push(temp);
  
}
console.log(newObj);
Run codeHide result
+1
source

var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
  var newObj = [];
  var itemValue,itemName = '';
  $(obj).each(function(index, item){
    if(index % 2 == 0){
      if(itemName != ''){
        var newObjEle = {};
        newObjEle[itemName] = itemValue;
        newObj.push(newObjEle);
      }
      itemName = item;
    }
    else{
        itemValue = item
    }
  })
  console.log(newObj);

0

- JSON, , .

var obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];

var result = Array.apply(null, Array(obj.length / 2)).map(i => ({}));
result.forEach((c, i, a) => (a[i][obj[2 * i]] = obj[2 * i + 1]));

console.log(result);
Hide result
0

,

obj = ["blue", 1, "red", 4, "yellow", 2, "green", 7];
result = [];
for (i = 0; i < obj.length; i++) {
  if (i % 2 == 0) {
    temp = {};
    temp[obj[i]] = obj[i + 1];
    result.push(temp);
  }
}
console.log(result);

jsfiddle.

, .

0

Source: https://habr.com/ru/post/1668699/


All Articles