![](/img/trans.png)
[英]Javascript: How to construct an object from several arrays and variables?
[英]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)}`); }
您可以使用Array的forEach()
執行以下操作:
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.