说我有一个对象:
var obj = { a:{}, b:1, c: new Set() };
对象在没有工作的情况下是不可迭代的,而Object.keys / values / entries并不是我想要的。 Object.entries()很接近,但我更希望它返回一个对象数组而不是一个2D数组,理想情况下引用完整(在适当的地方)。
类似于:
Object.items( obj ) = [ { a: {} }, { b: 1 }, { c: new Set() } ];
我知道我可以使用Object.entries()创建一个函数来执行此操作,我只是想确认已经有类似的东西。
答案 0 :(得分:2)
你是对的,没有任何东西可以做到这一点。您需要构建自己的函数,entries
是一个很好的起点。
var obj = { a:{}, b:1, c: new Set() };
var obj2 = Object.entries(obj).map((array) => ({ [array[0]]: array[1] }));
console.log(obj2);
console.log(obj2[2].c === obj.c);

答案 1 :(得分:0)
您可以为对象定义Symbol.iterator
,并使用一个属性获取单个对象。
var obj = { a:{}, b:1, c: new Set() },
array;
obj[Symbol.iterator] = function* () {
for (var [key, value] of Object.entries(this)) {
yield { [key]: value };
}
};
array = Array.from(obj);
console.log(array);
console.log(array[2].c === obj.c);