我是JavaScript的新手,我试图找出如何设置一个函数来删除最后一个键:右边的值对,就像数组的array.pop一样。这是我正在进行的任务。这似乎让我感到困惑,因为从我对JS的有限理解来看,它们在对象的属性列表中没有特定的顺序。如果有人有任何见解我会很感激。这是对象:
var array = {length:0, size:big, smell:strange};
这是我开始学习的地方,但是很难完成这个功能:
array.pop = function() {
//...
};
最终我希望结果如下:
array = {length:0, size:big};
提前致谢。
答案 0 :(得分:3)
对象没有任何已定义的属性顺序,因此没有“last”属性。您必须按名称删除属性,而不是位置。
当然,您可以迭代属性并在迭代时检查它们,并通过查看其名称来决定是否要删除任何给定属性。一些javascript实现将保留添加属性的顺序,但ECMAScript规范特别不保证这一点,因此无法依赖它。
答案 1 :(得分:0)
这将起作用
baseMapper
答案 2 :(得分:0)
此答案适用于密钥是动态生成的数字(如 0、1、2、3、4 等)的情况
const myObject = {
0: 'somestring',
1: 42,
2: false
};
delete myObject[`${Object.keys(myObject).length-1}`]
console.log(myObject);
输出:
<块引用>对象 { 0: "somestring", 1: 42 }
当 key 是字符串时,这一行逻辑可能不好。所以,请谨慎使用。