gpt4 book ai didi

javascript - 需要帮助理解 mergeSort 和 apply()

转载 作者:行者123 更新时间:2023-11-27 23:09:11 25 4
gpt4 key购买 nike

我是 js 新手,我试图理解这里如何使用 apply (最近我一直在努力理解 apply ) 。然而,我的问题有两个。虽然我了解合并排序的概述,但我不知道最后一个 block 中发生了什么。

function mergeSort(items){

if (items.length < 2) {
return items;
}

var middle = Math.floor(items.length / 2),
left = items.slice(0, middle),
right = items.slice(middle),
params = merge(mergeSort(left), mergeSort(right));

// Add the arguments to replace everything between 0 and last item in the array
params.unshift(0, items.length);
items.splice.apply(items, params);
return items;
}

最佳答案

在这种情况下,params 中的值将在调用 splice 时用作参数。如果有 3 个成员,则调用将是:

items.splice(params[0], params[1], params[2]);

但是由于事先不知道会有多少个成员,因此调用应该是什么样子,apply允许参数作为数组传递。现在您不需要知道有多少:

items.splice.apply(items, params);

所以调用是有效的:

items.splice(params[0], params[1], params[2], ..., params[n]);

apply 还允许设置this,并且由于它应该是items,因此它作为第一个参数传递。

关于javascript - 需要帮助理解 mergeSort 和 apply(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36324987/

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