Javascript添加到对象(用作数组)

时间:2018-01-30 16:34:21

标签: javascript object

我有一个具有以下结构的对象,我想知道如何为其添加一条线。

var itemList = {
  '1': { type: "car", make: "audi", price: 500, number: 10, description: "a car" },
  '2': { type: "bus", make: "renault", price: 50, number: 1, description: "a bus" }
}; 

添加行:

  '3': { type: "truck", make: "volvo", price: 5, number: 20, description: "a truck" },

我想在这个数组中添加另一行,但我不知道如何开始,所以欢迎任何帮助!

4 个答案:

答案 0 :(得分:3)

我假设您需要计算下一个插入点。

不确定为什么你没有使用实际的Array,但如果你有0的固定偏移量和来自那里的连续枚举,你可以使用Object.keys来获取下一个索引的键数。



const offset = 1;

var itemList = {
  '1': { type: "car", make: "audi", price: 500, number: 10, description: "a car" },
  '2': { type: "bus", make: "renault", price: 50, number: 1, description: "a bus" }
}; 


itemList[Object.keys(itemList).length + offset] = { type: "truck", make: "volvo", price: 5, number: 20, description: "a truck" }
  
console.log(itemList);




但是,这再次假定使用这种数据结构而不是Array有一些很好的理由。

请注意,如果事先不知道偏移量,则可以预先计算偏移量,同样假设其余的密钥是连续整数。



var itemList = {
  '1': { type: "car", make: "audi", price: 500, number: 10, description: "a car" },
  '2': { type: "bus", make: "renault", price: 50, number: 1, description: "a bus" }
}; 

const offset = Math.min(Object.keys(itemList).length, ...Object.keys(itemList));


itemList[Object.keys(itemList).length + offset] = { type: "truck", make: "volvo", price: 5, number: 20, description: "a truck" }
  
console.log(itemList);




或者,如果您没有一组连续的数字键,但需要在当前最高键之后添加一个,则可以执行以下操作:



var itemList = {
  '1': { type: "car", make: "audi", price: 500, number: 10, description: "a car" },
  '2': { type: "bus", make: "renault", price: 50, number: 1, description: "a bus" }
}; 

const next = Math.max(-1, ...Object.keys(itemList)) + 1;


itemList[next] = { type: "truck", make: "volvo", price: 5, number: 20, description: "a truck" }
  
console.log(itemList);




答案 1 :(得分:2)

很惊讶其他答案都没有简单建议切换到实际数组(对象),因为那时你只需将一个新对象推入其中。

然后,您可以利用可用于更改/过滤数据的所有有用array methods

function decorator(opts?: any) {
    return function<T extends new (...args: any[]) => object> (Class: T) {
        return class Wrapper extends Class{

        };
    }
}

const Smth = decorator()(SmthImpl);
Smth.staticConst; // Works as expected.

答案 2 :(得分:0)

正如rmlan所说,这不是一个数组,而是一个对象。您可以添加新的&#34;项目&#34;通过以下方式:

itemList['3'] = { type: "truck", make: "volvo", price: 5, number: 20, description: "a truck" };

答案 3 :(得分:0)

您可以像这样使用索引运算符:

&#13;
&#13;
var itemList = {
  '1': { type: "car", make: "audi", price: 500, number: 10, description: "a car" },
  '2': { type: "bus", make: "renault", price: 50, number: 1, description: "a bus" }
};

itemList[3] = { type: "truck", make: "volvo", price: 5, number: 20, description: "a truck" };

console.log(itemList);
&#13;
&#13;
&#13;