假设我们有以下对象数组(实际有 71000 个元素,但 4 个对象足以让您了解):
[
{
source: "France"
target: "Morocco"
timeN: "2008"
valueN: "252.35"
},
{
source: "France"
target: "Morocco"
timeN: "2009"
valueN: "424.12"
},
{
source: "France"
target: "Morocco"
timeN: "2010"
valueN: "152.24"
},
{
source: "France"
target: "Morocco"
timeN: "2011"
valueN: "-342.19"
}
]
如果 valueN
为负数,我如何有效地交换最后一个对象的 source
和 target
值?我想将 valueN
与 -1
相乘或调用 Math.abs()
然后也更改 source
“摩洛哥”
和 目标
“法国”
。
更新
虽然所有答案都很棒,但我已经采用了@Nina Scholz 的干净答案。然而,@Emil S. Jørgensen 的那个是性能最高的,一旦跟踪执行时间。我不知道为什么,但如果您不将它转换回 string
,即 valueN
,它似乎是最高效的。
最佳答案
Iterate . Check . Swap . Update .
var array = [{ source: "France", target: "Morocco", timeN: "2008", valueN: "252.35" }, { source: "France", target: "Morocco", timeN: "2009", valueN: "424.12" }, { source: "France", target: "Morocco", timeN: "2010", valueN: "152.24" }, { source: "France", target: "Morocco", timeN: "2011", valueN: "-342.19" }];
array.forEach(o => {
if (o.valueN < 0) {
[o.source, o.target] = [o.target, o.source];
o.valueN *= -1;
}
});
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 在对象数组中交换属性值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50490619/