我刚刚发现,使用具有相同值名称的函数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
。