gpt4 book ai didi

javascript - 从末尾索引数组

转载 作者:行者123 更新时间:2023-12-03 04:20:38 25 4
gpt4 key购买 nike

我正在学习 Javascript,并且我有 Python 背景。因此,对我来说,尝试从末尾索引一个数组是相当直观的,即使用负索引。
据我到目前为止所读到的内容,Javascript 不支持它们。然而,我发现了一些看起来很有趣的东西,但我无法理解其背后的原因。

todos = ['item1', 'item2', 'item3']

function updateTodos(index, new_value) {
todos[index] = new_value
console.log(todos)
}

function deleteTodos(index) {
todos.splice(index)
console.log(todos)
}

deleteTodos(-1)
updateTodos(-1, 'new_item')
deleteTodos(-1)

输出

["item1", "item2"]
["item1", "item2", -1: "new_item"]
["item1", -1: "new_item"]

问:为什么 deleteTodos 能够通过索引删除正确的内容,而 updateTodos 却不能?

问:如何适应 updateTodos 以及任何处理一般 array 数据结构的函数中的负索引行为?

据我所知,updateTodos中的索引会查找index变量并更新该索引处的值(如果存在),否则,它会创建键值对。 splice 方法支持负索引,不是吗?

如果您能澄清我的推理和/或帮助我提供有用的资源来更好地理解这个概念,我将不胜感激。

最佳答案

根据 MDN,splice 确实支持负索引。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

Index at which to start changing the array (with origin 0). If greater than the length of the array, actual starting index will be set to the length of the array. If negative, will begin that many elements from the end of the array (with origin 1).

所以,这就是删除有效的原因。

要在更新中启用负索引,您可以检查提供的参数是否为负。如果是,这是使用 array.length + index 来进行类似 python 索引的简单方式。

关于javascript - 从末尾索引数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43963602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com