gpt4 book ai didi

javascript - 一个线性函数可迭代对象数组并更改一个值

转载 作者:行者123 更新时间:2023-11-28 12:12:01 26 4
gpt4 key购买 nike

假设我有一个像这样的对象数组:

let x = [{'a': 0.288888, 'b': 0.5}, {'a':9.565464645654, 'b': 0.6}];

我想迭代这个并将数字更改为固定长度。我试过了

x.map((data) => data.a.toFixed(3))
# ["0.289", "9.565"]

预期输出:

[{'a': 0.289, 'b': 0.5}, {'a':9.565, 'b': 0.6}]

使其发挥作用的一种方法是:

x.map((data) => {
data.a = data.a.toFixed(3);
return data;
});

还有比这更好的方法吗?

最佳答案

使用forEach并改变现有对象:

const x = [{'a': 0.288888, 'b': 0.5}, {'a':9.565464645654, 'b': 0.6}];
x.forEach((data) => data.a = data.a.toFixed(3));
console.log(x);

这与您的 .map 在一行中执行的操作相同,但是 .map 应该只用于创建一个新数组 - 如果您'仅寻找副作用,请使用 forEach

如果您不想变异并想创建一个新数组,则在 .map 中返回一个新对象:

const x = [{'a': 0.288888, 'b': 0.5}, {'a':9.565464645654, 'b': 0.6}];
const changedX = x.map(({ a, b }) => ({ a: a.toFixed(3), b }));
console.log(changedX);

如果您的目标是代码可读性(这对于大多数脚本来说可能是最重要的事情),我建议反对尝试将所有内容压缩到一行 - 它不会让事情变得简单更具可读性,但通常情况恰恰相反。

要使第一个代码段通过 no-return-assignarrow-parens 规则,请在函数主体两边加上方括号,这样它就不是一个简洁的主体:

x.forEach((data) => { data.a = data.a.toFixed(3) });

Demo

关于javascript - 一个线性函数可迭代对象数组并更改一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com