【问题标题】:How to properly replace all elements in an array with its position? [duplicate]如何正确地将数组中的所有元素替换为其位置? [复制]
【发布时间】:2021-03-14 21:56:34
【问题描述】:

所以,我一直在思考这个问题,并试图在这里搜索是否有人已经问过这个问题。我很确定有人曾经问过这个问题,但我无法找到它,因为我我不确定如何正确地用词。所以,对不起,如果这个(很可能是非常简单的问题)已经在某个地方得到了回答。我仍然尝试在这里指定我的问题,所以再次抱歉,如果这是重复的。 好的,假设我们有以下自然数子集的数组:

var someNumbers = [0, 1, 2, 3, 4];

或者基本上是任何自然数子集的数组。现在,假设我出于某种原因修改了这个数组并且必须从该数组中删除一个元素,所以我得到了一个新数组,比如这个:

someNumbers = [0, 1, 3, 4];

这个现在缺少一个元素,即 2,因此数组不再是自然数的子集。我现在正在寻找的是我基本上想用它的位置替换这个新数组中的每个元素,所以我们会再次得到一个这样的数组:

someNumbers = [0, 1, 2, 3];

我曾多次尝试完成这个简单的任务,但仍然不知道如何正确地完成它。在一个实例中,我尝试通过 for 循环遍历数组,并通过将当前元素作为值与迭代器进行比较来替换每个元素,并将该元素替换为迭代器的当前值,只是让它失败在 i = 2,因为元素“2”被删除。

在循环中添加一个比较(考虑缺少的元素)并减去 1,确实有帮助,但如果假设我删除了元素 0,则会失败。此外,我什至不确定我的任何尝试是否真的有效并且不能更有效地完成。

我可能只是想得太多了,而且比我想象的要容易得多。

TL;DR:我基本上想知道如何用它的位置替换数组中的每个元素以及如何有效地做到这一点。

【问题讨论】:

  • 我不明白。如果你想要[0, 1, 2, 3] 然后做someNumbers.map((_, i) => i) ??这一点都不应该是棘手的
  • 我是否理解你想要一个包含元素 [0, ..., someNumbers.length - 1] 的数组?
  • 一个简单的地图任务怎么样...[0, 1, 3, 4].map((item, idx) => idx);...返回当前索引作为新项目/值?

标签: javascript arrays


【解决方案1】:

您可以使用array.map 函数对数组进行map。它的第二个参数将为您提供当前迭代的索引。您可以使用它来仅在数组上使用map,将值设置为等于其index。下面是如何使用地图的示例。

const someNumbers = [0, 1, 2, 3, 4];

someNumbers.map((ele, index) => {
  console.log(`current index is ${index}`);
  console.log(`current value is ${ele}`);
});

【讨论】:

    猜你喜欢
    • 2014-10-16
    • 2022-12-20
    • 2016-01-17
    • 2021-03-27
    • 1970-01-01
    • 2021-12-29
    • 2020-07-06
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多