【发布时间】:2018-03-01 16:44:08
【问题描述】:
假设我有一个对象:
var obj = { a:{}, b:1, c: new Set() };
如果没有工作,对象是不可迭代的,而且 Object.keys/values/entries 并不是我想要的。 Object.entries() 很接近,但我更希望它返回一个对象数组而不是二维数组,理想情况下引用完整无缺(在适当的情况下)。
比如:
Object.items( obj ) = [ { a: {} }, { b: 1 }, { c: new Set() } ];
我知道我可以使用 Object.entries() 创建一个函数来执行此操作,我只是想确认没有类似的东西。
【问题讨论】:
-
单一属性对象没有多大意义,也很难处理。你需要这种奇怪的格式做什么?不,标准库中确实没有这样做。
-
“引用完整”是什么意思?
-
@Bergi 大概他的意思是
a的{}值应该是结果中的同一个对象。这很难避免,除非您花费额外的时间来制作副本。 -
但是如果他认为改变原来
b的值1会传播到无法完成的结果(反之亦然)。 -
@Barmar Well
{get [key]() { return orig[key]; }, set [key](v) { orig[key] = v; }}甚至可以做到这一点:-)
标签: javascript object methods