几分钟前,我做了这个答案,下面是答案片段
let obj = {staff_changes: []};
let newStaff=[];
for (let i = 0; i < 4; i++) {
newStaff.push({id: 'staff' +i});
obj.staff_changes.push({
id: i,
newStaff: newStaff
});
}
console.log(obj);
如果您在上面的代码段中运行此代码,则可以看到/**id:4**/
和/**ref:4**/
。这是什么?
当代码执行时,即会将相同的重复值推入数组。因此,我希望在开始时它会生成一个Id:4
并且如果存在相同的重复值,则只需编写一条注释,例如已经生成的/**ref:4**/
where4
意思Id=:4
。
所以我想知道我的理解是正确的吗?。如果我的理解是正确的,那我们如何避免这种情况呢?我应该
object.assign()
在将值推入数组之前使用以避免这种情况吗?
您的数据结构包含对同一对象的多个引用。console.log
具有足够的智能以简化输出。
请注意(AFAIK),该规范不保证console.log
非实例的对象的任何特定输出String
,因此您不能依赖于浏览器,版本,月相等之间的输出相同。
考虑一下像这样的无限递归数据结构const a = []; a.push(a); console.log(a)
:您希望计算机在打印无限递归数组或console.log
缩写时锁定它?
const a = []
a.push(a)
console.log(a)
// [
// /**id:1**/
// /**ref:1**/
// ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句