为什么此JavaScript对象方法返回“非函数”方法?

时间:2019-04-07 17:55:01

标签: javascript node.js

this.breakintoletters=()=>
        this.lengthi!==0?(this.title2=this.title,this.title2.split(),this.title2.
            map((x)=>this.arol.push(new letter(x))))
                        :!!false 

所以基本上这是代码。它应该将字符串分解为字母,然后将相关对象推入数组。 检查字符串的长度,如果不为0,则返回错误,其中MAP函数位于...。)TypeError告诉我这不是函数。编辑器未显示错误。希望得到帮助

3 个答案:

答案 0 :(得分:4)

我建议使用不同的方法,事先检查this.lengthi并返回false,或稍后再返回推入值的映射长度。

this.breakintoletters = () => {
    if (!this.lengthi) return false;
    this.title2 = this.title;
    // this.title2.split(); the result is not taken, not even splitted
    return this.title2.map(x => this.arol.push(new letter(x)));
};

答案 1 :(得分:2)

您没有将分割后的值分配回this.title2,而是在map上使用this.split2,这是一个字符串

this.breakintoletters=()=>
        this.lengthi  ? (this.title2=this.title,
                         this.title2=this.title2.split(), 
                         this.title2.map((x)=>this.arol.push(new letter(x))))
                      :false

IMO,您应该尝试使代码仅在不影响阅读的情况下有效,您可以按照以下方式简单地对其进行

this.breakintoletters = ( ) => {
     if(this.lengthi === 0 ) return false;
     this.title2=this.title;
     this.title2=this.title2.split(); 
     return this.title2.map((x) => this.arol.push(new letter(x)))) 
 }

答案 2 :(得分:1)

(this.title2 = this.title,this.title2.split(),this.title2。             map((x)=> this.arol.push(新字母(x))))

this.arol是数组的名称吗?

尝试将其重组为:

(this.title.split()。map((x)=> this.arol.push(新字母(x)))

诸如split(),join(),map()等方法可以链接在一起。

尽管如此,我还是会重新考虑使用map函数以及上面其他评论者所涉及的三进制。我的意思是说它在技术上是可行的,但是如果目标是遍历字符串以推送某些值,那么最好使用for循环。当您要进行迭代以将相同的指定方法应用于每个单独的字符

时,映射函数更多

这只是一种格式化的事情,但是当您在变量和运算符之间留有一些空格并选择对您的工作有意义的变量名称时,它使阅读和理解代码变得容易得多(this.bookLength, this.reverseAr),或者至少使用通用的this.array或this.arr这样可以更轻松地提出这样的问题,因为您将不太清楚有关错别字的问题,并且是否打算使用更大的拼写代码库,编写清晰的代码对于不认识您的人来说很重要