如何在对象上弹出()? (ES6 / ES2015)

时间:2019-05-18 13:46:14

标签: javascript object ecmascript-6 pop

如何实现Object.pop()

Objects are ordered in ES2015,因此我能想到的唯一解决方案是将对象转换为保持顺序的数组。然后可以完成类似数组的操作。最终将数组转换回对象。我认为这是适当的:

  

Object.getOwnPropertyNames ...确实遵循以下顺序   对于普通物体:

     
      
  1. 整数索引(如果适用),以升序排列。
  2.   
  3. 其他字符串键(如果有),按属性创建顺序。
  4.   
  5. 符号键(如果有),按属性创建顺序。
  6.   

请参阅我引用的the link。因此,它不希望与数字一起使用,否则Object.pop()应该删除并返回按时间顺序在对象中最后插入的元素。我没有数字作为关键。可以在数字前加上字母以按时间顺序排列。

它应该通过以下测试

let obj = {a:1, b:2, c:3}

let popped = Object.pop(obj)

console.log(popped); // should output {c: 3}
console.log(obj); // should output {a:1, b:2}

某些链接:1 2 3 4 5 6

1 个答案:

答案 0 :(得分:1)

如果您要按名称删除属性,则只需delete

var obj = {
    foo: 1,
    bar: 2,
    baz: 3,
};

delete obj["bar"];

console.log(obj);

MDN says

  

对象本身没有任何方法可以删除其自身的属性(例如,Map.prototype.delete())。为此,必须使用delete operator