如何将对象附加到另一个对象?

时间:2016-02-19 02:58:49

标签: javascript

有人可以帮我追加另一个对象吗?例如,我有原始对象:

var object = {
    { product_code: '55993',
      brand: 'Phillips66',
      category: 'LUBES AND GREASES',
      description: 'cuatro cinco seis',
      price: '300.00',
      quantity: '3' 
    }
}

我想追加:

    { product_code: '90210',
      brand: 'Phillips66',
      category: 'LUBES AND GREASES',
      description: 'cuatro cinco seis',
      price: '500.00',
      quantity: '5' 
    }

最后,object看起来像:

object = {
    { product_code: '55993',
      brand: 'Phillips66',
      category: 'LUBES AND GREASES',
      description: 'cuatro cinco seis',
      price: '300.00',
      quantity: '3' 
    },
    { product_code: '90210',
      brand: 'Phillips66',
      category: 'LUBES AND GREASES',
      description: 'cuatro cinco seis',
      price: '500.00',
      quantity: '5' 
    }
}

我该怎么做?

5 个答案:

答案 0 :(得分:4)

您的对象变量应该是一个数组,而不是一个对象:

    var object = [
        { product_code: '55993',
          brand: 'Phillips66',
          category: 'LUBES AND GREASES',
          description: 'cuatro cinco seis',
          price: '300.00',
          quantity: '3' 
        }
    ]

然后你可以在其中添加其他对象:

object.push({ product_code: '90210',
      brand: 'Phillips66',
      category: 'LUBES AND GREASES',
      description: 'cuatro cinco seis',
      price: '500.00',
      quantity: '5' 
    });

希望它有所帮助。

答案 1 :(得分:1)

您有几个选择:

  1. 定义一个属性名称,用于存储第二个对象,这不会为您提供类似于问题末尾显示的结构。

  2. 使用数组,它会给你一些非常类似于问题末尾的内容:

    [
        { product_code: '55993',
          brand: 'Phillips66',
          category: 'LUBES AND GREASES',
          description: 'cuatro cinco seis',
          price: '300.00',
          quantity: '3' 
        },
        { product_code: '90210',
          brand: 'Phillips66',
          category: 'LUBES AND GREASES',
          description: 'cuatro cinco seis',
          price: '500.00',
          quantity: '5' 
        }
    ]
    

    请注意[],而不是最外层的{}

  3. 如果你有一个对象:

    var object1 = {foo: "bar"};
    

    和另一个对象:

    var object2 = {biz: "baz"};
    

    然后选项#1如下所示:

    object1.anyNameHere = object2;
    

    ...会给你:

    {
       foo: "bar",
       anyNameHere: {
           biz: "baz"
       }
    }
    

    或选项#2:

    var a = [object1, object2];
    

    ...会给你:

    [
        {
            foo: "bar"
        },
        {
            biz: "baz"
        }
    ]
    

答案 2 :(得分:1)

有两种方法,但第一种方法是使用for循环轻松检索数据的最佳方式

var object1 = { product_code: '55993',
    brand: 'Phillips66',
    category: 'LUBES AND GREASES',
    description: 'cuatro cinco seis',
    price: '300.00',
    quantity: '3'
};

var object2 ={ product_code: '55993',
    brand: 'Phillips66',
    category: 'LUBES AND GREASES',
    description: 'cuatro cinco seis',
    price: '300.00',
    quantity: '3'
}

1)创建一个数组变量并推送该数组中的所有对象

var myObjectList = [];
myObjectList.push(object1);
myObjectList.push(object2);

2)您可以创建对象并为该对象指定值

var myObjectList = {object1: object1, object2 : object2};

答案 3 :(得分:0)

您可以使用ES6传播运算符来附加对象。

object = { ...object, 
...{ product_code: '90210',
      brand: 'Phillips66',
      category: 'LUBES AND GREASES',
      description: 'cuatro cinco seis',
      price: '500.00',
      quantity: '5' 
    }
}

答案 4 :(得分:0)

我赞成使用扩展语法的CaptainAdmin答案。非常有用,很高兴知道它在那里。但是,在这种情况下,使用类似以下内容既方便又正确:

var o1 = {
    product_name: "Super One",
};

var o2 = {
    quantity: 50,
};

specializeWith(o1, o2);

位置:

function specialize_with(o, S) { for (var prop in S) { o[prop] = S[prop]; } }

那么您的o1将是:

var o1 = {
    product_name: "Super One",
    quantity: 50,
};

不幸的是,仔细查看原始问题,我发现最初并不是问这个问题。需要对象数组,而不是继承,专门化或扩展。还是把它留在这里。

另请参见https://github.com/latitov/OOP_MI_Ct_oPlus_in_JS,specializeWith()就是从那里来的。

同样,请查看https://github.com/latitov/OOP_MI_Ct_oPlus_in_JS