[英]Create Array by Dynamic Keys and Values
我在變量中獲取字符串中的值,即
let name = 'Vishesh';
let name2 = 'Vishesh2';
和一個數組即
let cars = [{carName: "Mercedes"},{carName: "Volvo"},{carName:"BMW"}];
現在我想創建一個數組,其中我的鍵是名稱和值,應該有cars數組,即
Array=[{Vishesh: [{carName: "Mercedes"},{carName: "Volvo"},{carName:"BMW"}]},{Vishesh2: [{carName: "Mercedes"},{carName: "Volvo"},{carName:"BMW"}]}];
let name = 'Vishesh';
let name2 = 'Vishesh2';
let cars = [{carName: "Mercedes"},{carName: "Volvo"},{carName:"BMW"}];
let array = []
array.push({[name]:cars})
array.push({[name2]:cars})
console.log(array);
您可以將名稱直接插入到字典結構中作為鍵。
let name = 'Vishesh'; let name2 = 'Vishesh2'; console.log([ { [name]: [ { carName: "Mercedes" }, { carName: "Volvo" }, { carName:"BMW" } ] }, { [name2]: [ { carName: "Mercedes" }, { carName: "Volvo" }, { carName:"BMW" } ] } ]);
但是您可以更加動態地執行此操作
let name = 'Vishesh'; let name2 = 'Vishesh2'; let cars = [ { carName: "Mercedes" }, { carName: "Volvo" }, { carName:"BMW" } ]; function keyByNames(names, cars) { let named = {} names.forEach(name => { named[name] = JSON.parse(JSON.stringify(cars)) }) return named } console.log(keyByNames([ name, name2 ], cars));
怎么樣(假設只有兩個名字):
let obj1 = {};
obj1[name] = cars;
let obj2 = {};
obj2[name2] = cars;
var array = [obj1, obj2];
注意:兩個對象都引用相同的數組。 因此,更改數組將在兩個位置“更新”數組(因為它是通過引用獲得的)。
但是,如果您需要一組動態名稱,則代碼可能如下所示:
var names = ["Vishesh", "Vishesh2", "Vishesh3"];
var array = [];
for(var i = 0; i < names.length; i++) {
var name = names[i];
var obj = {};
obj[name] = cars;
array.push(obj);
}
在您的汽車陣列上使用reduce函數也是解決方案。
let names = ["Wishes1", "Wishes2", "Wishes3"] let cars = [{carName: "Mercedes"},{carName: "Volvo"},{carName:"BMW"}]; const withNames = (names) => (currentMapState, currentItem, currentIndex) => { currentMapState[names[currentIndex]] = currentItem; return currentMapState; } console.log(cars.reduce(withNames(names), {}));
另外,withNames函數易於測試。 祝你今天愉快。
如果始終有兩個名稱:
const Array = [
{ [name]: cars },
{ [name2]: cars }
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.