这篇文章实际上是一种XY问题的例子。
寻求帮助的人的真实问题(“ X”)被遮盖了,因为他们没有直接询问问题X,而是询问如何解决他们认为可以解决的第二个问题(“ Y”)问题X。
我最初的问题是该数组(在图片中的第127行)正在变空。当我寻找这个问题时,我震惊地发现变量在执行过程中变得空了。即使这就是这篇文章的目的,但如果我一直在思考,我就无需发布。
真正的问题?查看图像的第131行...
if (siblings[childitem].my.parents.length = 0) {
单等号导致一个空数组。
原始问题如下。
我通过chrome开发工具发现了这一点。
这是之前的照片。
您可以在本地范围内查看所有相关信息,并在实时代码内联的黄色文本中回显该信息。所有的值都是合适的。
在执行中执行下一步。 。 。
您可以在实时代码中看到标线片/光标已移至右侧。先前的局部变量已消失。 old parents
现在是[]
,而children
是undefined
。
这是参考问题吗?我从this post here获得了filter
语法。
到底发生了什么?
以下是您需要的文本代码。
selected.my.children.forEach (childitem => {
// let parentindex = siblings[child].my.parents.indexOf(selected.my.place);
let oldparents = siblings[childitem].my.parents;
let newparents = oldparents.filter(e => {e != selected.my.place});
siblings[childitem].my.parents = newparents;
// if (parentindex > -1) {
// siblings[child].my.parents.splice(parentindex, 1)
// }
if (siblings[childitem].my.parents.length = 0) {
siblings[childitem].faceup();
}
console.log(siblings[childitem].my);
});
答案 0 :(得分:1)
因为您输入了新的功能范围。那就是您传递给过滤器函数的回调:
e => {e != selected.my.place} // <- this is a new scope, no local variables other than `e`
您可以清楚地看到e
之外没有其他局部变量。
但是,您可以在父范围中找到childitem
,newparents
等。在您的示例中,它是Closure(单击Closure (tap)
)
答案 1 :(得分:-2)
ElementList是数组而不是数组,不能直接使用过滤器,需要先将其转换为数组:
sess3 = Session()
d1 = Device(hostname='d1', scope='s1', poll_ip='pi1')
p2 = Port(device=d1, name='port1')
p2 = sess3.merge(p2)
sess3.commit()
sess3.close()