javascript - 修改数组而不改变

标签 javascript arrays

我正在尝试解决一个问题,该问题说明要移除(删除)数组中的最小数字,而不更改最小元素左侧的元素顺序。我的代码是 -:

function removeSmallest(numbers){
    var x =  Math.min.apply(null,numbers);
    var y = numbers.indexOf(x);
    numbers.splice(y,1);
    return numbers;
}

在说明中严格给出了不要改变原始数组/列表。但是我收到一条错误消息,指出您已更改原始数组/列表。 如何删除错误?

最佳答案

听着不要在这里使用 SPLICE。菜鸟和专家在不考虑效果的情况下交替使用拼接和切片时会犯很多众所周知的错误。

SPLICE 将改变原始数组,而 SLICE 将浅拷贝原始数组并在给定条件下返回数组的一部分。

这里Slice会创建一个新数组

const slicedArray = numbers.slice()
const result = slicedArray.splice(y,1);

并且您无需改变原始数组即可获得结果。

关于javascript - 修改数组而不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52011541/

相关文章:

c - 段错误 : Trying to write array of strings in shared memory c

c++ - 非常大的数组——C 数组与 C++ 数组。 Visual Studio - 超过最大值 (268435456)

javascript - UseState 不会在 componentDidMount 生命周期方法中更新

javascript - pdf导出完成时回调

javascript - kendo ui grid多次添加记录

javascript - 使用cheerio提取文本

javascript - 使用 Chai+Mocha 为失败的测试自定义特定错误消息?

javascript - 如何让 React 计算动态变量?

java - 如何在 Java 中分配数组的数组?

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP