javascript - 我怎样才能从对象中删除一个键,不可变,除非在您执行删除之前不知道键名?

标签 javascript ecmascript-6

我知道我可以使用 rest 运算符从对象中删除一个键,例如

const myObject = {
  a: 1,
  b: 2,
  c: 3
};
const { a, ...noA } = myObject;
console.log(noA); // => { b: 2, c: 3 }
但是如果直到运行时才知道 key 名称怎么办(例如随机生成的 ID)
const myobject = {
  cke503: { Fake: '1' },
  cke502: { Fake: '2' },
  cke501: { Fake: '3' },
};
我直到运行时才知道 ID,所以我使用 const id = Object.Keys(myobject)[2] 来获取 'cke501'

    const id = Object.Keys(myobject)[2] // -> 'cke501'
    const { [id], ...rest } = myobject; // -> This doesn't work

最佳答案

您需要指定一个变量名来将值放入其中,但变量名不能是动态的,因此您必须使用与计算属性非常相似的语法 const { [prop]: propVal, ...noA } = myObject; :

const myObject = {
  a: 1,
  b: 2,
  c: 3
};
const prop = 'a'; // Substitute this with the runtime property calculation
const { [prop]: propVal, ...noA } = myObject;
console.log(noA); // => { b: 2, c: 3 }
console.log(propVal);

关于javascript - 我怎样才能从对象中删除一个键,不可变,除非在您执行删除之前不知道键名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63531979/

相关文章:

javascript - 将鼠标悬停在该元素上时,如何将 json 数据分配给该段落?

javascript - onstart 和 oncomplete 在 p :commandLink 的数据表中不起作用

angular - typescript /Angular/ES6 : can I finally let `hasOwnProperty()` die in for loops?

javascript - 如何从嵌套模块导入?

Javascript:附加到键的值,其中该值是一个列表

javascript - 如何编写可重用和模块化的 Redux 选择器?

javascript - 使用 p5.js 在图像上摆动形状

javascript - Google/Typekit Webfont-Loader 不检测非 ASCII 字体

javascript - 奇怪的 ES6 Array.every 行为

javascript - 当 promise 在 Redux 中间件内解析时,为什么我无法调度操作?