хорошо, так что если вам нужен массив объектов, каждый из которых представляет одну пару ключ / значение вашего исходного объекта, это подойдет вам:
original = {
x : 2,
y : 3,
}
mapped = Object.entries(original).map(([_key, _value]) => ({[_key]: String(_value)}));
console.log(mapped);
если вам нужен новый объект с тем же ключом / значениями, но с сопоставленными значениями (например, String()
), то это должно работать для вас:
original = {
x: 2,
y: 3,
};
mapped = Object.entries(original)
.reduce((obj, [_key, _value]) =>
Object.assign(obj, { [_key]: String(_value) }),
{});
console.log(mapped);
и если вам нужен сопоставленный объект, но внутри массива, поместите его в массив:
original = {
x: 2,
y: 3,
}
mappedInArray = [
Object.entries(original).reduce((obj, [_key, _value]) =>
Object.assign(obj, { [_key]: String(_value) }), {})];
console.log(mappedInArray);
также, вообще говоря, обратите внимание, что вы делаете это:
Object.entries(obj).map((_key, _value) => ...);
, что неверно, поскольку записи - это список пар (массивы длины два, первый элемент - ключ, второй элемент - значение), которые при сопоставлении перейдут к параметру _key
и, следовательно, ваш параметр _value
будет просто индексом этой пары ключ-значение в массиве записей. то есть вы получите:
_key = [<first-key>, <first-value>]; _value = 0;
_key = [<second-key>, <second-value>]; _value = 1;
...
вместо этого вы должны написать это так:
Object.entries(obj).map(([_key, _value]) => ...);