如何在JavaScript中映射“映射”的键/值对:
var map = {"a": 1, "b": 2, "c": 3};
alert(JSON.stringify(map));
我需要在每次迭代中获取一个包含键/值对的映射器:
// ["a_1", "b_2", "c_3"]
map.map((key, value) => key + "_" + value);
答案 0 :(得分:3)
使用Object.entries
,然后在键值对上使用map
:
const map = {"a": 1, "b": 2, "c": 3};
const mapped = Object.entries(map).map(([k,v]) => `${k}_${v}`);
console.log(mapped);
Object.entries
返回:
[
[ "a", 1 ],
[ "b", 2 ],
[ "c", 3 ]
]
然后遍历每个内部数组并使用template literals
创建字符串答案 1 :(得分:2)
这不是地图,而是对象。 (不过,您可以考虑使用Map
。)
要获取其键/值对的属性,可以使用Object.entries
,然后将map
应用于:
map = Object.entries(map).map(([key, value]) => key + "_" + value);
Object.entries
相对较新,但可以很容易地填充到较旧的环境中。
实时示例:
var map = {"a": 1, "b": 2, "c": 3};
map = Object.entries(map).map(([key, value]) => key + "_" + value);
console.log(map);
或者,使用Map
,您可以使用其内置的entries
方法,该方法返回一个可迭代对象,将其传递到Array.from
中,并使用Array.from
的映射回调:
var map = new Map([
["a", 1],
["b", 2],
["c", 3]
]);
map = Array.from(map.entries(), ([key, value]) => key + "_" + value);
console.log(map);
(或将Iterable扩展为数组-[...map.entries()]
-并在其上使用map
,但以上所述避免了临时丢弃的数组。)
在这两种情况下,我都在箭头函数的参数列表中使用结构分解,该函数接收[key, value]
格式的数组。
答案 2 :(得分:2)
您可以获取对象的条目并加入键/值对。
var map = { a: 1, b: 2, c: 3 },
result = Object.entries(map).map(a => a.join('_'));
console.log(result);
答案 3 :(得分:0)
您可以使用Object.keys
来提供该对象中存在的键的数组,然后对该数组使用数组映射方法并访问每个键的值并创建一个字符串
var map = {
"a": 1,
"b": 2,
"c": 3
};
let neObj = Object.keys(map).map(item => `${item}_${map[item]}`)
console.log(neObj)
答案 4 :(得分:0)
第一个 [0] 用于位置元素,第二个 [0] 用于名称键或 [1] 用于值等。
console.log([...map][0][0])
var map = {
"a": 1,
"b": 2,
"c": 3
};
console.log([...map][0][0] + "_" + [...map][0][1])
输出:
a_1