Как отобразить пары ключ / значение «карты» в JavaScript? - PullRequest
0 голосов
/ 12 февраля 2019

Как отобразить пары ключ / значение «карты» в 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);

Ответы [ 4 ]

0 голосов
/ 12 февраля 2019

Вы можете взять записи объекта и соединить пары ключ / значение.

var map = { a: 1, b: 2, c: 3 },
    result = Object.entries(map).map(a => a.join('_'));
    
console.log(result);
0 голосов
/ 12 февраля 2019

Используйте 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 ]
]

Затем переберите каждый из этих внутренних массивов и создайте строку, используя литералы шаблона

0 голосов
/ 12 февраля 2019

Вы можете использовать Object.keys, который даст массив ключей, присутствующих в этом объекте, затем использовать метод карты массива для этого массива и получить доступ к значению каждого ключа и создать строку

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

let neObj = Object.keys(map).map(item => `${item}_${map[item]}`)

console.log(neObj)
0 голосов
/ 12 февраля 2019

Это не карта, это объект.(Вы можете использовать Map.)

Чтобы получить его свойства в виде пар ключ / значение, вы можете использовать Object.entries, который вызатем можно применить map к:

map = Object.entries(map).map(([key, value]) => key + "_" + value);

Object.entries является относительно новым, но легко заполняемым для более старых сред.

Live Пример:

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);

(Или разверните итерируемое в массив - [...map.entries()] - и используйте на нем map, но вышеизложенное позволяет избежать временного одноразового массива.)

В обоих случаях я использую деструктуризацию в списке параметров функции стрелки, которая получает массив в формате [key, value].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...