表单数组到Javascript中的对象

时间:2018-09-28 09:17:04

标签: javascript

我有这个数组和一个变量:

const a = [1, 5, 3]
const model = 'Audi'

我想要这样的物体:

const obj = {
    data: {
      0: 1,
      1: 5,
      2: 3,
    },
    cars: {
      0: 'Audi',
      1: 'Audi',
      2: 'Audi',
    },
  }

我可以这样做吗?

我认为我可以使用for。这是我想做的:

const obj = {}
for(let i = 0; i < a.lenght; i++) {
  obj.cars = 
}

我不知道如何完成代码……而且我认为这不是最好的解决方案。

谢谢

5 个答案:

答案 0 :(得分:1)

您可以将Object.assign与扩展语法和map方法一起使用。

const a = [1, 5, 3]
const model = 'Audi'

const obj = {
  data: Object.assign({}, ...a.map((e, i) => ({[i]: e}))),
  cars: Object.assign({}, ...a.map((e, i) => ({[i]: model})))
}

console.log(obj)

答案 1 :(得分:1)

除了其他答案外,还可以使用reduce和逗号表达。

const a = [1, 5, 3];
const model = 'Audi';

const create = (arr, model) => 

  arr.reduce((acc, val, i) =>
    
    // comma expression which evaluates from left to right and returns the last value
    
    (acc.data[i] = val, acc.model[i] = model, acc), { data: {}, model: {}});

console.log(create(a, model));

答案 2 :(得分:1)

 const myArray = [1, 5, 3];
 const model = 'Audi';
 var obj = {};
 obj.data = {};
 obj.cars = {};
 var i = 0;
myArray.forEach(function(element){
i++;
obj.data[i] = element; 
obj.cars[i] = model;

})

答案 3 :(得分:0)

您可以采用两个不同的变量,这些变量是所需对象的稍后属性,并使用数组分配给对象,并将Column映射到数组并将其分配给对象。

两个分配都将索引保留为新对象的键。

model
var a = [1, 5, 3],
    model = 'Audi',
    data = Object.assign({}, a),
    cars = Object.assign({}, a.map(_ => model)),
    result = { data, cars };

console.log(result);

答案 4 :(得分:0)

您可以循环执行以设置新的const“最终”(原始方式) 但是我认为@nenad的版本更好。

const a = [1, 5, 3];
const model = 'Audi';
const final = {};
var cars = [], data = [];
for(var i=0; i<a.length;i++) {
    data.push(i);  cars.push(model);
}

final.data = data;
final.cars = cars;

console.log(final);