如何在JavaScript中使用数组填充Map对象的值?

时间:2017-09-26 18:39:53

标签: javascript arrays dictionary

我有一个对象和一个数组。数组和对象都是24对/索引长。如何用数组的值替换对象的值? 这不起作用:

for (let keys of zeitFaktor.keys() ){
    for (ix = 0; ix < 24; ix++){
        zeitFaktor.set(keys, patientenFaktoren[ix]);
    };
};

此处所有键都与数组的第一个值配对。有没有人知道如何解决这个问题?任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:0)

如果您确定zeitFaktor包含与patientenFaktoren相同数量的元素,则只需在单循环和迭代中使用其键:

const keys = zeitFaktor.keys();

for (let ix = 0; ix < 24; ix++) {
  const key = keys.next().value;
  zeitFaktor.set(key, patientenFaktoren[ix]);
}

答案 1 :(得分:0)

您只需要一个循环,而不是嵌套循环。转到一个循环机制,它也为您提供密钥的索引:

Array.from(zeitFaktor.keys(), (key, ix) =>
    zeitFaktor.set(key, patientenFaktoren[ix])
);

&#13;
&#13;
const zeitFaktor = new Map([['a', 1], ['b', 1], ['c', 1], ['d', 1]]);
const patientenFaktoren = [15, 37, -23, 6];

Array.from(zeitFaktor.keys(), (key, ix) =>
    zeitFaktor.set(key, patientenFaktoren[ix])
);

console.log([...zeitFaktor]);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

解释

zeitFaktor.keys()返回一个迭代器,Array.from&#34;消费&#34;。当Array.from从该迭代器中提取每个键时,它会将其传递给回调函数。该回调函数将获得它发生的键和索引顺序。

使用短表达式语法(无大括号)将回调函数写为箭头函数(=>)。这意味着将为每个键评估zeitFaktor.set(key, patientenFaktoren[ix]),这将按预期修改Map。