数组的索引存储为全局变量时不起作用

时间:2019-11-30 21:40:37

标签: javascript arrays

我正在尝试在函数incIndex运行时更新数组索引:

const arr=[1, 2, 3, 4, 5];
let index = 0;
let arrIndex = arr[index]
const incIndex = () => index++;

但是只能通过这种方式工作

console.log(arr[index]) // 1
incIndex();
console.log(arr[index]) // 2

但是当我这样做

console.log(arrIndex) // 1
incIndex();
console.log(arrIndex) // 1

我仍然得到索引0的元素。有人知道如何解决它,以便我可以使用第二种方法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用for循环

const arr=[1, 2, 3, 4, 5];

for(let i = 0; i < arr.length; i++)
{
  console.log(arr[i]);
}

其中循环中的i变量将是递增索引

答案 1 :(得分:0)

您做错了。

这将数组的第一个元素的值复制到一个新变量。

let arrIndex = arr[index]

更改索引时不能期望它会被更改。

答案 2 :(得分:0)

如果在第一个声明之后不替换

arrIndex值,则该值将始终相同。 (另外,您最后缺少分号)

如果设置arrIndex = arr[index],它将等于分配给它的arr[index]的值(1)。这不是动态值。

对于动态值,您也许可以创建一个函数,但这并不值得。最好使用arr [index]

function returnDynamicValue(){
    return arr[index];
}

然后

console.log(returnDynamicValue());
incIndex();
console.log(returnDynamicValue());