gpt4 book ai didi

javascript - 无法理解与拼接调用相关的尾随元素索引

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:31:01 25 4
gpt4 key购买 nike

我发现了一个很棒的函数,可以将数组中的元素移动到不同的位置:

function eleMove1( arr, from, to ) {
arr.splice( to, 0, arr.splice( from, 1 )[ 0 ] );
}

var arr = [ 'a', 'b', 'c', 'd', 'e' ];
eleMove1( arr, 3, 0 );
console.log ( 'eleMove1: ' + arr ); // eleMove1: d,a,b,c,e
console.log ( arr ); // ["d", "a", "b", "c", "e"]
console.log ( '\n ' );

/*
*/

function eleMove2( arr, from, to ) {
arr.splice( to, 0, arr.splice( from, 1 ) );
}

var arr = [ 'a', 'b', 'c', 'd', 'e' ];
eleMove2( arr, 3, 0 );
console.log ( 'eleMove2: ' + arr ); // eleMove2: d,a,b,c,e
console.log ( arr ); // [["d"], "a", "b", "c", "e"]
console.log ( '\n ' );

但是由于我刚刚开始使用 JS,所以我对 [ 0 ] ); 拼接语句的相关性感到困惑。约定让我相信它指的是数组的第一个索引元素。但是什么数组?肯定不是 arr 传递给函数,也肯定不是 func 的 arg 数组,因为我从中提取它的原始函数实际上并没有将 arr 作为函数的 args 之一传递:

Move an array element from one array position to another

它似乎在 arr 上的第二个 splice 调用结束时挂了,但我仍然无法弄清楚为什么以及为什么。

然而,arr 的输出似乎在很大程度上不受缺少这段代码的影响。那么 splice 语句中的这个小片段有什么意义,它如何与函数的整体性能相关(如果有的话)?

最佳答案

[0] 指的是数组中被删除的第一个元素。如果我们遍历代码。

function eleMove1( arr, from, to ) {
arr.splice( to, 0, arr.splice( from, 1 )[ 0 ] );
}

类似于这样写。

function eleMove1( arr, from, to ) {
deletedItemsArray = arr.splice( from, 1 );
itemYouDeleted = deletedItemsArray[0];

arr.splice( to, 0, itemYouDeleted);
}

之所以可行,是因为 splice 就地改变了 arr 并将它删除的项目作为数组返回。删除的项目成为初始 arr.splice 方法的参数,该方法将 itemYouDeleted 放在 to

的位置

关于javascript - 无法理解与拼接调用相关的尾随元素索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542104/

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