如何在 JavaScript 中映射“映射”的键/值对?

Den*_*gin 4 javascript dictionary data-structures

如何在 JavaScript 中映射“map”的键/值对:

var map = {"a": 1, "b": 2, "c": 3};

alert(JSON.stringify(map));
Run Code Online (Sandbox Code Playgroud)

我需要在每次迭代中获取一个包含键/值对的映射器:

// ["a_1", "b_2", "c_3"]
map.map((key, value) => key + "_" + value);
Run Code Online (Sandbox Code Playgroud)

adi*_*iga 7

这不是一个Map对象。它只是一个普通的对象。因此,在键值对上使用Object.entries然后使用map

const map = {"a": 1, "b": 2, "c": 3};
const mapped = Object.entries(map).map(([k,v]) => `${k}_${v}`);
console.log(mapped);
Run Code Online (Sandbox Code Playgroud)

Object.entries 返回:

[["a",1],["b",2],["c",3]]
Run Code Online (Sandbox Code Playgroud)

然后遍历每个内部数组并使用模板文字创建字符串


如果您有Map对象,请使用Array.from(map)获取地图的条目并使用的第二个参数Array.from遍历每个条目并创建所需的字符串

Array.from(map, ([k,v]) => `${k}_${v}`)
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 6

这不是一张地图,而是一个对象。(不过,您可能会考虑使用 a Map。)

要将其属性作为键/值对获取,您可以使用Object.entries,然后您可以将其应用于map

map = Object.entries(map).map(([key, value]) => key + "_" + value);
Run Code Online (Sandbox Code Playgroud)

Object.entries 相对较新,但很容易在旧环境中填充。

现场示例:

map = Object.entries(map).map(([key, value]) => key + "_" + value);
Run Code Online (Sandbox Code Playgroud)


或者,使用 a Map,您可以使用其内置entries方法,该方法返回一个可迭代对象,将其传递给Array.from并使用Array.from的映射回调:

var map = {"a": 1, "b": 2, "c": 3};
map = Object.entries(map).map(([key, value]) => key + "_" + value);
console.log(map);
Run Code Online (Sandbox Code Playgroud)

(或者将可迭代对象扩展为数组——[...map.entries()] 并map在其上使用,但上面避免了临时丢弃的数组。)

在这两种情况下,我都在箭头函数的参数列表中使用解构,它以[key, value]格式接收数组。