javascript - 在对象数组中交换属性值的有效方法

标签 javascript arrays object flip

假设我们有以下对象数组(实际有 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 为负数,我如何有效地交换最后一个对象的 sourcetarget 值?我想将 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/

相关文章:

java - 数组 : selection sort doesn't display

c++ - 数组中的唯一整数

php - 如何获取未实例化的类(类外)的类名?

python Django : in view is it better to add properties to an object or make a dictionary of the data?

javascript - 我使用 Camera Cordova 的代码有什么问题?

Javascript 在 HTML 文件中不起作用

javascript - ECONFLICT 无法找到适合 jquery Foundation 的版本

java - 浏览器窗口关闭后如何收到通知?

javascript - 动态调用具有多个参数的函数

php - 在第 317 行获取 fatal error : Using $this when not in object context in Stemmer. php