Array Push在JavaScript中为相同的值使用相同的索引

时间:2015-09-18 18:30:44

标签: javascript jquery arrays

我刚刚发现使用相同值名称的函数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;项插入数组。

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

我需要使用多维数组吗? 我有一副纸牌,我需要将排名和套装存放在阵列中。到目前为止,我为排名和套装创建了两个不同的数组,但我遇到了这个问题。我会分别检索等级和套装,我应该将它们组合成一个新的多维数组吗?怎么样 ?

由于

2 个答案:

答案 0 :(得分:1)

<强> Example fiddle

  

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

单击按钮后,您的数组看起来像跟随:

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

所以当你尝试:

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

这将返回您在描述中看到的Orange的第一个索引,因此通常会返回1

答案 1 :(得分:1)

使用.lastIndexOf()代替.indexOf(),它将获得最后一个(最近添加的)而不是第一个。

Fiddle