我有这个数组和一个变量:
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 =
}
我不知道如何完成代码……而且我认为这不是最好的解决方案。
谢谢
答案 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);