gpt4 book ai didi

javascript - JavaScript 数组顺序有保证吗?

转载 作者:IT王子 更新时间:2023-10-29 03:19:18 25 4
gpt4 key购买 nike

假设 JavaScript 数组以表单形式发布(使用 ajax/JQuery)数组中的顺序是否有保证?

来自@Quentin 的有效问题“定义‘以表格形式发布’”

$.ajax({
type: "POST",
url: url,
data: { foo: [{ name: "one" }, { name: "two" }] },
success: success,
dataType: dataType
});

扩展问题(由于上述原因),数组是否保证在服务器端保持顺序?

最佳答案

如有疑问,您可以随时引用 ECMAScript 标准:Array Exotic Objects

数组是语言中的一种特殊对象,它具有关于如何处理长度属性的额外语义,这些属性是从 0 到 2^32 的整数属性。在 javascript 中,如果在 0 到排除的长度属性范围内存在缺失值,则数组可以是稀疏的。各种数组方法都会考虑到这一点,例如 forEach忽略缺失值

什么是缺失值?

该语言试图使数组尽可能像普通对象一样起作用:您可以向它添加任何属性,甚至可以拥有从数组继承的对象。

var fruits = ["Apple", "Banana"];
fruits.preferred = "Apple";

这种代码没有任何问题,但是如果你开始写:

fruits[100] = "Strawberry";
for(let i = 0; i < fruits.length; ++i) {
...
}

100 是 [0, 2^32) 范围内的属性名称,也是数组元素,但此时 fruits.length 应该是什么?它必须是 101,否则 for 循环永远不会得到“草莓”。

但在这一点上,您必须接受从未定义过的元素范围 [2, 99]:这些是缺失值。

反之亦然,修改长度属性时也必须如此

var fruits = ["Apple", "Banana"];
fruits.length = 0;

现在 for 循环永远不会获取数组的任何元素:这相当于清空 fruits 数组。

也可以增加长度,结果是缺少值

所以是的,数组是有序的,因为您可以按升序迭代其所有元素,但请记住,可能会有缺失值

关于javascript - JavaScript 数组顺序有保证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34955787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com