【问题标题】:Clone javascript object attributes?克隆javascript对象属性?
【发布时间】:2015-02-08 02:02:26
【问题描述】:

假设我有几个对象。这些对象各有四个属性,包含简单的整数。 我想为每个属性创建另一个具有最高值的对象,因此它是一个嵌合对象。我不希望它在我操作它时改变原件,反之亦然。

在 javascript 中执行此操作的方法是什么?一个简单的分配会创建一个引用,但我需要一个副本。

PS:请纯 JS,不要库。

【问题讨论】:

  • 具有最高值”不会是任何东西的克隆?

标签: javascript object properties clone


【解决方案1】:

好的,找到问题了。我通过简单地复制一个源对象来启动结果对象,生成一个全新的对象将修复它。谢谢!

【讨论】:

    【解决方案2】:

    听起来你正在尝试做这样的事情。

    根据 cmets 更新

    // Source objects.
    var objects = [
      { x: 3, y: 4, z: 36 },
      { x: 9, y: 5, z: 9 },
      { x: 1, y: 3, z: 100 },
      { x: 7, y: 0, z: 18 },
    ];
    
    // Result object.
    var result = {
        x: objects[0].x,
        y: objects[0].y,
        z: objects[0].z
    };
    
    // Set the maximum value for each property. 
    for(var i = 1; i < objects.length; i++){
      result.x = Math.max(result.x, objects[i].x);
      result.y = Math.max(result.y, objects[i].y); 
      result.z = Math.max(result.z, objects[i].z); 
    }
    

    【讨论】:

    • result 将是 Object {x: 9, y: 5, z: 100}
    • @mido22 - 不,它没有。 Math.max() 也适用于负值。
    • @jfriend00 @sam 想一想,如果对象中的所有值都是负数,那么结果将是0,0,0(而不是最小负值)这是错误的
    • 我猜,用对象中第一个元素的值初始化结果会解决它。
    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 2017-04-26
    • 2012-12-12
    • 2018-12-26
    相关资源
    最近更新 更多