我正在尝试调整此处的一些代码:
http://gregtrowbridge.com/a-basic-pathfinding-algorithm/
但是,我无法弄清楚在#92行上使用的“切片”方法是什么。有人能告诉我吗?它被称为没有任何参数。感谢。
[编辑]
StackOverflow不允许我发布代码,说它太多了,抱歉。这是相关的片段。看看第4行。
sap.m.Tree items
答案 0 :(得分:1)
调用.slice()
方法会生成数组的(浅)副本。
答案 1 :(得分:1)
Array.slice()
通常以这种方式用于返回数组的副本,以便调用者不会更改原始数组。我相信返回的数组只是一个浅的副本,所以这适用于数组或基元,但对于对象数组,它可能无法按预期工作。
答案 2 :(得分:1)
要将数组复制到新数组中,请将原始数据浅层复制并将复制的数组作为返回值返回。
切片不会改变原始数组。它返回原始数组中元素的浅表副本。原始数组的元素将复制到返回的数组中,如下所示:
- 对于对象引用(而不是实际对象),slice将对象引用复制到新数组中。原始数组和新数组都引用相同的对象。如果引用的对象发生更改,则更改对新的和原始数组都可见。
- 对于字符串,数字和布尔值(不是String,Number和Boolean对象),slice会将值复制到新数组中。对一个数组中的字符串,数字或布尔值的更改不会影响另一个数组。
答案 3 :(得分:1)
Slice返回原始数组的浅表副本,因此在副本上完成的所有操作都不会更改原始数组。将数组赋给变量时,实际上只是给新变量数组在内存中的位置。
因此,切片方法是制作一个与原始数组完全相同的全新数组的好方法。另外,在比较数组时请记住,===方法通过比较它们在内存中的地址来检查相等性,这样即使它们完全相同,切片数组也不会被认为等于原始数据。
要证明这一点:
{{1}}