在 Javascript 中维护数组顺序

cec*_*i0n -3 javascript php arrays loops

我是 JavaScript 的新手,我在使用数组时遇到了麻烦,我希望我的数组按照我明确编写它的方式进行排序,而不是 JavaScript 决定它想要它的方式。

如果我们有一个数组

var array = {
    0: 'zero',
    4: 'four',
    2: 'two'
};
Run Code Online (Sandbox Code Playgroud)

当我选择在控制台中显示它或对其进行迭代时,它会像这样重新排序

array = {
    0: 'zero',
    2: 'two',
    4: 'four'
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试了 2 个循环,for 循环,以及带有 in 语句的 for 循环。两者都按照我假设的方式工作,因为他们使用密钥并向上/向下工作,因此我指定的顺序绝对没用。

我如何按顺序编写/打印/使用我的数组,在其他语言(如 PHP)中,它就像

$array = array(
    0 => 'zero',
    4 => 'four',
    2 => 'two'
);

foreach($array as $key => $value)
    echo $key ."\n";
Run Code Online (Sandbox Code Playgroud)

这将输出

0
4
2
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Tyl*_*nis 6

您使用的是 object {},而不是 array []。对象没有明确的顺序,而数组有。这就是为什么你有你的问题。改变你{}[],你会没事的。您甚至可以使用一组对象。

var array = [
    {0: 'zero'}, 
    {4: 'four'}, 
    {2: 'two'}
];
Run Code Online (Sandbox Code Playgroud)

像这样循环

for(var i = 0; i < array.length; i++){
  console.log(array[i]);
}
Run Code Online (Sandbox Code Playgroud)

给我们正常的秩序。

Object {0: "zero"}
Object {4: "four"}
Object {2: "two"} 
Run Code Online (Sandbox Code Playgroud)

另一个编辑:问题是您试图拥有一个具有属性和值的数组,就像一个对象一样,而不使用对象 {property: value} - 这不能用数组来完成。要像你想要的那样循环一个数组,就像

var arr = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

for(var i = 0; i < arr.length; i++){
  console.log(i) //1,2,3
}
Run Code Online (Sandbox Code Playgroud)

但问题是,如上所述,您想要更复杂的数组,而您根本无法做到。

  • 这个答案严重混淆了本质上是一个简单的问题,即 OP 不知道“数组”和“对象”之间的区别,也不知道如何迭代它们中的任何一个。 (2认同)