我有一个具有以下结构的对象,我想知道如何为其添加一条线。
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" },
我想在这个数组中添加另一行,但我不知道如何开始,所以欢迎任何帮助!
答案 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)
您可以像这样使用索引运算符:
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;