#javascript
#javascript
Вопрос:
Я новичок в javascript и очень ценю помощь. У меня есть следующий массив:
let array =
[{key: "sabc", value: 19},
{key: "spalabc", value: 21},
{key: "spalte2", value: 22},
{key: "spabc2", value: 22},
{key: "spabce2", value: 23}]
Я хочу иметь новый массив, в котором все значения изменяются с помощью функции (в данном случае логарифмической базы 10). Итак, новый массив должен выглядеть следующим образом:
let array =
[{key: "sabc", value: 1.278753601},
{key: "spalabc", value: 1.322219295},
{key: "spalte2", value: 1.342422681},
{key: "spabc2", value: 1.342422681},
{key: "spabce2", value: 1.361727836}]
Я пробовал forEach, но не получаю желаемого результата.
Комментарии:
1. вы хотите использовать map . Аналогично foreach, но оно делает именно то, что вы хотите. Она сопоставляет новые значения каждому элементу.
2. почему бы вам не показать нам, что вы пробовали? Хотя идиоматический способ сделать это — с помощью map
3. @John : это изменит ваш исходный массив, следовательно, не совсем отличается от того, что вы сделали бы с
.forEach()
(обратите внимание, однако, что это.forEach()
само возвращаетundefined
)4.
forEach
не обязательно изменять исходный массив, на самом деле вы можете легко реализоватьmap
в терминахforeach
:arr.map(f)
может быть получено какconst res = []; arr.forEach(elt => res.push(f(elt)); return res;
. (Конечно, я не рекомендую на самом деле делать это, когда мыmap
уже это сделали.)
Ответ №1:
Вы можете использовать .map
:
let array =
[{key: "sabc", value: 19},
{key: "spalabc", value: 21},
{key: "spalte2", value: 22},
{key: "spabc2", value: 22},
{key: "spabce2", value: 23}]
arr = array.map(e => {
return {...e, value:Math.log10(e['value'])};
});
console.log(...arr);
Ответ №2:
let array =
[{key: "sabc", value: 19},
{key: "spalabc", value: 21},
{key: "spalte2", value: 22},
{key: "spabc2", value: 22},
{key: "spabce2", value: 23}]
const result = array.map(a => ({ ...a, value: Math.log10(a.value)}))
console.log(result)