首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何修复Javascript中的‘TypeError: arr.map is not a function’错误

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

Stack Overflow用户
提问于 2019-06-26 07:38:44
回答 1查看 408关注 0票数 0

我正在做Hackerrank挑战'Manasa and Stones‘

我已经做了一个循环解决方案,但它花了很多时间来解决树层次,我想我需要一个递归解决方案。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-26 07:45:18

arr = arr.join(arr2)并没有像您认为的那样工作-- .join方法将数组中的元素连接到由参数分隔的字符串中。当您将这个字符串arr传递给递归函数调用时,您将在下一个堆栈帧上崩溃,因为字符串没有map函数。

您可能指的是.concat,它将参数数组中的元素放在实例数组的后面。这里有一个片段来说明发生了什么。

代码语言:javascript
复制
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.

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56763336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档