gpt4 book ai didi

javascript - 将值插入数组会导致 undefined variable ,但在函数内部工作

转载 作者:行者123 更新时间:2023-11-29 17:40:34 24 4
gpt4 key购买 nike

我试图仅将“eachNumber”数组中的值与“appearMost”数组中“indexes”变量的索引一起推送,但由于某种原因,它返回了一个具有未定义值的数组:

var indexes = [1,2];
var appearMost = [];
var eachNumber = [4, 7, 9, 8];

indexes.map(function(c) { appearMost.push(eachNumber[c]) }); // should return [7,9]

appearMost 的结果应该是 [7,9]。

奇怪,因为我构建了一个函数,该函数返回数组中出现次数最多的数字,该数组依赖于上面那行似乎不起作用的行。例如:

mostAppearing([5,5,2,2,1]); // correctly returns 5
mostAppearing([3,4,1,6,10]); // correctly returns -1
mostAppearing([4,7,7,7,9,9,8]); // correctly returns 7
mostAppearing([4,7,7,9,7,9,9,8]); // correctly returns 9

函数有代码:

function mostAppearing(arr) { // e.g. var arr = [4,7,7,9,7,9,9,8];

var eachNumber = Array.from(new Set(arr)); // [4, 7, 9, 8];

if (arr.length == eachNumber.length) {
return -1;
} else {
var counts = eachNumber.map(function(c){ return arr.filter(function(el){ return el==c }).length }); // [1, 3, 3, 1];
var maxVolume = Math.max(...counts); // 3
var volVolume = counts.filter((c) => c == maxVolume).length; // 2

if (volVolume == 1) {
return arr[maxVolume];
} else {
var indexes = counts.reduce((a, c, i) => (c === maxVolume) ? a.concat(i) : a, []); // [1,2]
var appearMost = [];
indexes.map(function(c) { appearMost.push(eachNumber[c]) }); // relies on this line
return Math.max(...appearMost);
}
}

}

谁能解释 (1) 为什么结果是未定义的值而不是 [7,9],以及 (2) 我的函数如何正确工作?它应该失败。感谢您的帮助。

最佳答案

appearMost 的值已正确更新。

var indexes = [1,2];
var appearMost = [];
var eachNumber = [4, 7, 9, 8];

indexes.map(function(c) { appearMost.push(eachNumber[c]) })
console.log(appearMost)

我相信您希望 map 函数的返回值是 7,9 而不是 appearMost 中的值。 map 本身不会返回值,因为您没有在函数中使用 return。更好的做法是让 map 函数返回数组而不是改变现有数组:

appearMost = indexes.map(function(c) { return eachNumber[c] })

关于javascript - 将值插入数组会导致 undefined variable ,但在函数内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392240/

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