簡體   English   中英

通過動態鍵和值創建數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM