我刚刚发现使用相同值名称的函数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>
如果你运行它,你会发现答案是&#34; 1&#34; ,这对第一个&#34; Orange&#34;项插入数组。
我该如何避免这种行为?我需要将相同的值插入到具有不同索引的数组中。
我需要使用多维数组吗? 我有一副纸牌,我需要将排名和套装存放在阵列中。到目前为止,我为排名和套装创建了两个不同的数组,但我遇到了这个问题。我会分别检索等级和套装,我应该将它们组合成一个新的多维数组吗?怎么样 ?
由于
答案 0 :(得分:1)
<强> Example fiddle 强>
indexOf() 方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1。
单击按钮后,您的数组看起来像跟随:
["Banana", "Orange", "Apple", "Mango", "Orange"]
所以当你尝试:
var orange_index = fruits.indexOf("Orange");
这将返回您在描述中看到的Orange
的第一个索引,因此通常会返回1
。
答案 1 :(得分:1)
使用.lastIndexOf()
代替.indexOf()
,它将获得最后一个(最近添加的)而不是第一个。