arr.Append() 与 ColdFusion 中的 arr.Push()

arr.Append() vs. arr.Push() in ColdFusion

有什么区别

<cfscript>
   i = []
    
   i.push(1)

   i = []

   i.append(1)
</cfscript>

?

他们似乎都有相同的结果。

如果你运行这个

<cfscript>
    
    i = []
    
    writedump(i.push(1)) // returns array length
    writedump(i.append(1)) // returns array
    
</cfscript>

你可以看到他们给出了不同的反应。

除了 James A. Mohler 的回答(其中每个函数的 return 值不同)之外,两者之间还有另一个区别。对于 append(),还有一个额外的可选布尔参数 merge,如果设置为 true(默认),它将合并到源数组。如果为 false,它将在末尾添加数组作为附加元素。对于将单个元素附加到数组的示例,将 merge 参数设置为 true 或 false 不会改变任何内容。但是,如果您将 2 个数组附加在一起,区别就很明显了。例如

<cfscript>
   i=[1,2,3,4,5];
   i.append([6,7], true);
   writeDump(i);

   i=[1,2,3,4,5];
   i.append([6,7], false);
   writeDump(i);

   i=[1,2,3,4,5];
   i.push([6,7]); // Works the same as append(..., false);
   writeDump(i);
</cfscript>

编辑(来自 James A. Mohler 的评论)

结果
i.append([6,7], true); [1,2,3,4,5,6,7]
i.append([6,7], false); [1,2,3,4,5,[6,7]]
i.push([6,7]); [1,2,3,4,5,[6,7]]

你可以看到要点here