在此代码中使用什么是“切片”?

时间:2017-08-22 19:59:59

标签: javascript

我正在尝试调整此处的一些代码:

http://gregtrowbridge.com/a-basic-pathfinding-algorithm/

但是,我无法弄清楚在#92行上使用的“切片”方法是什么。有人能告诉我吗?它被称为没有任何参数。感谢。

[编辑]

StackOverflow不允许我发布代码,说它太多了,抱歉。这是相关的片段。看看第4行。

sap.m.Tree items

4 个答案:

答案 0 :(得分:1)

调用.slice()方法会生成数组的(浅)副本。

答案 1 :(得分:1)

Array.slice()通常以这种方式用于返回数组的副本,以便调用者不会更改原始数组。我相信返回的数组只是一个浅的副本,所以这适用于数组或基元,但对于对象数组,它可能无法按预期工作。

答案 2 :(得分:1)

要将数组复制到新数组中,请将原始数据浅层复制并将复制的数组作为返回值返回。

  

切片不会改变原始数组。它返回原始数组中元素的浅表副本。原始数组的元素将复制到返回的数组中,如下所示:

     
      
  • 对于对象引用(而不是实际对象),slice将对象引用复制到新数组中。原始数组和新数组都引用相同的对象。如果引用的对象发生更改,则更改对新的和原始数组都可见。
  •   
  • 对于字符串,数字和布尔值(不是String,Number和Boolean对象),slice会将值复制到新数组中。对一个数组中的字符串,数字或布尔值的更改不会影响另一个数组。
  •   

答案 3 :(得分:1)

Slice返回原始数组的浅表副本,因此在副本上完成的所有操作都不会更改原始数组。将数组赋给变量时,实际上只是给新变量数组在内存中的位置。

因此,切片方法是制作一个与原始数组完全相同的全新数组的好方法。另外,在比较数组时请记住,===方法通过比较它们在内存中的地址来检查相等性,这样即使它们完全相同,切片数组也不会被认为等于原始数据。

要证明这一点:

{{1}}
相关问题