我试图使用循环清空数组对象:
this.payload = {
'names': ['john','chris'],
'addresses': ['10 king street', '20 king street'],
};
for (const [prop, items] of Object.entries(this.payload)) {
items = [];
}
我想留下来:
this.payload = {
'names': [],
'addresses': [],
};
但我的循环似乎没有改变价值。
答案 0 :(得分:2)
通过赋值给一个对象(/ array)变量,你可以将该变量切换到另一个对象引用,而不是触及最初分配的对象。
而不是创建一个与现有数组无关的新数组,就像你现在所做的那样(items = []
), mutate items
数组,如下所示:
items.length = 0;
答案 1 :(得分:2)
您可以保留数组引用并将长度设置为零,而不是分配一个新的空数组,这样可以保留数组以供本地引用。
var payload = {
'names': ['john','chris'],
'addresses': ['10 king street', '20 king street'],
};
for (const [prop, items] of Object.entries(this.payload)) {
items.length = 0;
}
console.log(payload);
答案 2 :(得分:2)
尝试设置this.payload [prop] = [] 这是一个有效的解决方案。希望它有所帮助!
var payload = {
'names': ['john','chris'],
'addresses': ['10 king street', '20 king street'],
};
for (const prop of Object.keys(this.payload)) {
payload[prop] = []
}
console.log(payload);
答案 3 :(得分:0)
假设您在代码的其他位置使用this.payload.names
或this.payload.addresses
,如果这些参与者需要知道要清除的数组,则需要保留数组引用,使用array.length = 0
。
每当更改length属性时,每个名称都是的属性 一个数组索引,其值不小于新的长度 自动删除。
var payload = {
'names': ['john', 'chris'],
'addresses': ['10 king street', '20 king street'],
};
const names = payload.names;
const addresses = payload.addresses;
for (const items of Object.values(this.payload)) {
items.length = 0;
}
console.log(payload);
console.log(names, addresses); // [] []
但是,如果您不需要保留引用,则可以创建一个新数组并让垃圾收集器处理旧值。
var payload = {
'names': ['john', 'chris'],
'addresses': ['10 king street', '20 king street'],
};
const names = payload.names;
const addresses = payload.addresses;
for (const prop of Object.keys(this.payload)) {
payload[prop] = [];
}
console.log(payload);
console.log(names, addresses); // ["john", "chris"] ["10 king street", "20 king street"]