gpt4 book ai didi

javascript - array.push() 不起作用,即使数组对象已明确定义并在范围内

转载 作者:行者123 更新时间:2023-11-30 15:22:29 25 4
gpt4 key购买 nike

我有以下简单的 JavaScript 代码(合并排序),由于某种原因,将值推送到数组在 merge() 函数中不起作用(jsfiddle 中的第 26 和 31 行)。它与数组的范围有关吗?但是它在合并函数中有明确的定义。我在这里遗漏了一些非常概念性的东西。任何帮助将不胜感激。

https://jsfiddle.net/kalyanc/pu8988qc/

var A = [5,2,4,7,1,3,2,6];      

mergeSort(A);

function mergeSort(array) {
if (array.length < 2) {
return array;
}
var midpoint = parseInt(array.length/2);
var left = array.slice(0, midpoint);
var right = array.slice(midpoint, array.length);
alert("Calling merge with arrays, " + left + " and " + right);
return merge(mergeSort(left), mergeSort(right));
}

function merge(L, R) {
var Output = []; // Output array is clearly defined here.

var m = 0;
var n = 0;

while(m < L.length && n < R.length)
{
for (var x = 0; x < Math.min(L.length, R.length); x++) {
if (L[m] <= R[n]) {
Output.push(L[m]); // Does not work!
m++;
alert("Output from merge is array " + toString(Output));
// Alerts: Output from merge is array [object Undefined]
} else {
Output.push(R[n]); // Does not work!
n++;
alert("Output from merge is array " + toString(Output));
// Alerts: Output from merge is array [object Undefined]
}
}
}

// Check if either L or R have an element left
if (m < L.length) {
for (var o = m; o < L.length; o++) {
Output.push(L[o]);
}
}
if (n < R.length) {
for (var o = n; o < R.length; o++) {
Output.push(R[o]);
}
}
return Output;
}

最佳答案

toString是对象原型(prototype)函数,应该在对象上调用。

在您的特定实例中,不要调用 toString(Output),而是尝试使用 Output.toString()

jsfiddle

关于javascript - array.push() 不起作用,即使数组对象已明确定义并在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43501496/

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