[英]Form array to object in 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 =
}
我不知道如何完成代码……而且我认为这不是最好的解决方案。
谢谢
您可以将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)
除了其他答案外,还可以使用其他方法来实现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));
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;
})
您可以采用两个不同的变量,这些变量是所需对象的后续属性,并使用数组分配给对象,并将model
映射到数组并将其分配给对象。
两种分配都将索引保留为新对象的键。
var a = [1, 5, 3], model = 'Audi', data = Object.assign({}, a), cars = Object.assign({}, a.map(_ => model)), result = { data, cars }; console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.