我有两个字符串数组键和值:
let keys = [a,b,c,d]
let values = [1,2,3,4]
如何将它们转换为地图?
预期输出为:
{a: "1", b: "2", c: "3", d: "4"}
答案 0 :(得分:8)
您可以在ES6中使用Map
var myMap = new Map();
// setting the values
myMap.set('key1', 'value1');
myMap.set('key2', 'value2');
myMap.set('key3', 'value3');
您的答案:
for (let i = 0; i < keys.length; i++) {
myMap.set(keys[i], values[i]);
}
答案 1 :(得分:3)
首先创建一个对象。然后遍历数组并将键和值添加到对象。
let keys = ['a','b','c','d'];
let values = [1,2,3,4];
let obj = {};
keys.forEach((key, index) => {
obj[key] = values[index]
});
console.log(obj);
答案 2 :(得分:1)
您可以在任何数组上使用array reduce并使用index
从另一个数组中检索值
let keys = ['a', 'b', 'c', 'd'];
let values = [1, 2, 3, 4];
let k = keys.reduce((acc, curr, index) => {
acc[curr] = values[index]
return acc;
}, {});
console.log(k)
答案 3 :(得分:1)
首先,您需要正确声明字符串数组。
let keys = ['a', 'b', 'c', 'd'];
let values = ['1', '2', '3', '4'];
var zip = (target, ...arr) => {
if (target == null) throw Error('Target is undefined');
if (arr[0] == null || arr[1] == null) throw Error('Lists must not be null');
if (arr[0].length !== arr[1].length) throw Error('Lists must match in length');
if (Array.isArray(target)) {
arr[0].forEach((x, i) => target.push([arr[0][i], arr[1][i]]));
} else if (typeof target === 'object') {
arr[0].forEach((x, i) => target[arr[0][i]] = arr[1][i]);
} else {
throw Error('Unsupported target type');
}
return target;
}
var zipObj = (...arr) => zip.call(null, {}, ...arr);
var zipArr = (...arr) => zip.call(null, [], ...arr);
//console.log(zip({}, keys, values));
console.log(zipObj(keys, values)); // Zip object
//console.log(zip([], keys, values));
console.log(zipArr(keys, values)); // Zip array
.as-console-wrapper { top: 0; max-height: 100% !important; }
答案 4 :(得分:0)
使用lodash时,这是单线的:
_.zipObject(keys,values)
答案 5 :(得分:0)
这应该可以解决问题:
let keys = ['a','b','c','d']
let values = [1,2,3,4]
let mapped = keys.reduce((accumulator, current, index) => {
accumulator[current] = values[index];
return accumulator;
}, {});
console.log(mapped)
// Result should be:
{a: 1, b: 2, c: 3, d: 4}
Reduce是一种功能强大的方法,可用于各种任务。
在这里,我们将keys
的给定值“减少”到一个对象中,其中keys
是键,而values
是相关值。
reduce
中的第一个参数是一个回调函数,您至少需要传递accumulator
和current
变量(可以使用不同的名称);其他参数是index
和array
,它们代表迭代的当前索引和要迭代的原始数组。
第二个参数是accumulator
的初始值;默认情况下,它将是第一个current
值,但在本例中,我们将其设置为{}
,因此我们可以将其视为对象。
我希望这会有所帮助!