我刚刚发现,使用具有相同值名称的函数array.push(value)将给具有相同值名称的第一项提供相同的索引。

查看以下示例代码:

<p>Click the button to add a new element to the array.</p>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;

function myFunction() {
    fruits.push("Orange");
var orange_index = fruits.indexOf("Orange");
document.getElementById("demo").innerHTML = orange_index;
}
</script>


如果运行它,您会注意到答案是“ 1”,它对应于插入到数组中的第一个“ Orange”项。

如何避免这种行为?我需要将相同的值插入具有不同索引的数组中。

我需要使用多维数组吗?
我有一副扑克牌,我需要将军衔和西服存储在阵列中。到目前为止,我为等级和西服创建了两个不同的数组,但是我遇到了这个问题。我分别检索等级和花色,是否应该将它们一起推入新的多维数组?怎么样 ?

谢谢

最佳答案

Example fiddle


  indexOf()方法返回可以在数组中找到给定元素的第一个索引;如果不存在,则返回-1。


单击按钮后,数组如下所示:

["Banana", "Orange", "Apple", "Mango", "Orange"]


因此,当您尝试:

var orange_index = fruits.indexOf("Orange");


就像您在描述中看到的那样,它将返回Orange的第一个索引,因此通常它将返回1

09-25 16:42
查看更多