javascript - 如何修复 Javascript 中的 ‘TypeError: arr.map is not a function’ 错误

标签 javascript arrays mapping

我正在参加黑客排名挑战“Manasa 和 Stones”

我已经完成了循环解决方案,但解决树级别花了很多时间,我想我需要一个递归解决方案。

function stones(n, a, b) {


    var arr = [0,0];
    var rresult = recursive(0,a,b,arr,n)

    return rresult;
}
function recursive(n,a,b,arr,end){
    if (n == end){ return arr }
    else {
        let arr2 = arr.map(function(x) {
   return x * 2;
});
        arr = arr.map(function(x) {
   return x * 2;
});
        arr = arr.join(arr2)
        recursive(n,a,b,arr,end)
    }

}

它应该按预期工作来解决 https://www.hackerrank.com/contests/microverse-coding-challenges/challenges/manasa-and-stones/problem (我不希望你提出解决方案,我需要知道为什么我的问题在那里*这没有意义)

我的所有代码 => https://github.com/Macatuz/MHackerrankSamples/blob/master/Manasa_and_Stones.js

最佳答案

arr = arr.join(arr2)并没有按照你的想法去做-- .join 方法将数组中的元素连接成由参数分隔的字符串。当您传递此字符串 arr 时进入递归函数调用,您将在下一个堆栈帧上崩溃,因为字符串没有 map功能。

您的意思可能是 .concat ,它将参数数组中的元素放在实例数组的后面。这是一个片段来说明正在发生的事情。

const arr1 = ["apples", "bananas"];
const arr2 = ["celery", "asparagus"];

const joined = arr1.join(arr2);
const concatted = arr1.concat(arr2);

console.log(joined, typeof joined);  // whoops?
console.log(concatted);              // ah. much better.

请注意,这只能解决标题中的查询,但不会生成解决挑战的工作代码 - 这是给读者的练习。

关于javascript - 如何修复 Javascript 中的 ‘TypeError: arr.map is not a function’ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56763336/

相关文章:

java - 在 Java/JavaScript 中解析 ISO-8601 持续时间

javascript - 如何计算绘制区域的面积?

javascript - 正则表达式 javascript 未按预期工作

php - 没有嵌套的多个foreach

javascript - 根据动态键数组从数组返回值

java - 如何创建有效的自定义 JSON 解析异常映射?

javascript - 根据过滤器和搜索栏重新排序和隐藏图片

javascript - 数组更改时不调用 AngularJs Formatter

php - 对象关系映射 : What's the best way to implement getters?

mapping - 将映射应用于 Elasticsearch 中的子字段