Dem*_*tic 37 javascript arrays post
假设在表单中发布了一个JavaScript数组(使用ajax/JQuery),是否保证了数组中的顺序?
来自@Quentin的有效问题"定义"以表格形式发布'"
$.ajax({
type: "POST",
url: url,
data: { foo: [{ name: "one" }, { name: "two" }] },
success: success,
dataType: dataType
});
Run Code Online (Sandbox Code Playgroud)
扩展问题(由于上述原因),数组是否保证在服务器端保留顺序?
Nic*_*oca 37
遇到疑问时,您总是可以参考ECMAScript标准:Array Exotic Objects
Array是一种特殊类型的对象,在语言中具有关于如何处理length属性的附加语义,相对于从0到2 ^ 32的整数属性.在javascript中,如果缺少0到length属性的缺失值,则数组可以是稀疏的.各种数组方法都考虑到这一点,例如forEach忽略缺失值
什么是缺失值?
该语言尝试使数组尽可能地对正常对象起作用:您可以向其添加任何属性,甚至包含从数组继承的对象.
var fruits = ["Apple", "Banana"];
fruits.preferred = "Apple";
Run Code Online (Sandbox Code Playgroud)
这种代码不会造成任何问题,但如果你开始写:
fruits[100] = "Strawberry";
for(let i = 0; i < fruits.length; ++i) {
...
}
Run Code Online (Sandbox Code Playgroud)
100是[0,2 ^ 32]范围内的属性名称,因此是一个数组元素,但此时应该是fruits.length应该是什么?它必须是101,否则for循环永远不会得到"草莓".
但是在这一点上你必须接受从未定义的一系列元素[2,99]:这些是缺失的值.
反之亦然,修改length属性时必须如此
var fruits = ["Apple", "Banana"];
fruits.length = 0;
Run Code Online (Sandbox Code Playgroud)
现在for循环永远不会得到数组的任何元素:这相当于清空fruits数组.
也可以增加长度,结果是缺少值
因此,对数组进行排序,因为您可以按递增顺序迭代其所有元素,但请记住,可能存在缺失值
归档时间: |
|
查看次数: |
16541 次 |
最近记录: |