gpt4 book ai didi

javascript - 数组中两个项目的最佳实践切换位置

转载 作者:行者123 更新时间:2023-11-30 13:27:43 24 4
gpt4 key购买 nike

通过 JavaScript 切换数组中两个项目位置的最佳做法是什么?

例如,如果我们有这个数组 ['one', 'two', 'three', 'four', 'five', 'six'] 并且想用 5 替换 2得到这个最终结果:['one', 'five', 'three', 'four', 'two', 'six']

enter image description here

理想的解决方案是简短而高效的。

更新:

var temp 技巧正在发挥作用,我知道这一点。我的问题是:正在使用 JavaScript native Array methods快还是不快?

array.splice().concat().blah().blah() 之类的东西看起来更快并且使用更少的内存。我没有开发使用数组方法的函数,但我确信这是可能的。

最佳答案

只需使用一个变量作为临时存储:

var temp = data[1];
data[1] = data[4];
data[4] = temp;

因为这只是复制数组中的值,所以它避免了 slice 和 splice 之类的方法,这些方法会在数组的大部分周围移动或创建全新的数组,相比之下,这将非常昂贵,而且扩展性也很差。这是一个 O(1) 操作,而拼接将是一个 O(n) 操作,其中 n 是要移动的项目数,类似于 length*2-index1-index2。

这是对交换项目的不同方式的性能测试:http://jsperf.com/array-item-swap/2

即使您以不需要移动大量数据的方式使用 splice,它仍然很慢。复制值的速度大约快 50 倍。

关于javascript - 数组中两个项目的最佳实践切换位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898957/

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