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。
有什么区别
<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。