簡體   English   中英

從兩個數組構造對象

[英]Construct Object From Two Arrays

我有兩個列表要合並為鍵值對:

keys = ['Jan 2016', 'Feb 2016', 'Mar 2016'];

values = ['janData', 'febData', 'marData'];

我想要的理想結果是:

dataMap = {
    'Jan 2016': 'janData',
    'Feb 2016': 'febData',
    'Mar 2016': 'marData'
};

我看着在Javascript中的字典理解或Object`map` ,看到有很多方法可以建立一個使用對象.reduce()assign()給定現有的陣列。 但是,當我有兩個數組時,我不知道如何適應這些方法。

問題:如何從兩個現有數組構造dataMap對象?

近年來,對象理解似乎有了一些更新。 assign()似乎很新,但是也許它不是執行任務的最佳工具。 另外,我僅使用本地javascript。

使用forEach函數。

 var keys = ['Jan 2016', 'Feb 2016', 'Mar 2016']; var values = ['janData', 'febData', 'marData']; let result = {}; keys.forEach((k, i) => result[k] = values[i]); console.log(result); 

您可以初始化一個Map對象:

地圖構造器

一個數組或其他可迭代對象,其元素為鍵值對(具有兩個元素的數組,例如[[ 1, 'one' ],[ 2, 'two' ]] )。 每個鍵值對均已添加到新Map; 空值被視為未定義。

 var keys = ['Jan 2016', 'Feb 2016', 'Mar 2016']; var values = ['janData', 'febData', 'marData']; let result = new Map(keys.map((k, i) => [[k], values[i]])); for (let key of result.keys()) { console.log(`${key} = ${result.get(key)}`); } 

資源

您可以使用ArrayforEach()執行以下操作:

 var keys = ['Jan 2016', 'Feb 2016', 'Mar 2016']; var values = ['janData', 'febData', 'marData']; var dataMap = {}; keys.forEach(function(k, i){ dataMap[k] = values[i]; }) console.log(dataMap); 

let dataMap = {}

for (let month in keys) {
    const _key = keys[month]
    dataMap[_key] = values[month]
}

此答案取決於您的數組處於“相同”順序

我知道這里已經有很多非常好的答案,但是如果您想要更多的“函數式編程”方法,可以采用以下另一種方法:

 const keys = ['Jan 2016', 'Feb 2016', 'Mar 2016']; const values = ['janData', 'febData', 'marData']; const dataMap = keys.map((key, i) => ({ [key]: values[i] })) .reduce((key, val) => Object.assign({}, key, val), {}); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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