[英]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.