在输出中返回undefined

时间:2017-12-04 11:01:17

标签: javascript

我是javascript的新手,我正在努力理解return语句:



 P*            -------------------------------------------------------------
 P*            getLastChar - Get last non-blank char in parameter
 P*            -------------------------------------------------------------
 P getLastChar     b                   export
 D getLastChar     pi             1a
 D*  Input-parameter
 D  charseq                     100a   value
 D*  Local fields
 D  lastChar       s              1a   inz(' ')
 D  chrseq         s              1a   dim(100)
 C
 C*            -------------------------------------------------------------
 C*            Error handling
 C*            -------------------------------------------------------------
 C     charseq       ifeq      *blanks
 C                   return    x'00'
 C                   endif
 C
 C*            -------------------------------------------------------------
 C*            Reverse input char sequence
 C*            -------------------------------------------------------------
 C     1             do        101           x
 C                   eval      chrseq(101-x) = %subst(charseq:x:1)
 C                   enddo
 C*  Now: How do I get chrseq(1) to chrseq(100) into charseq back?
 C*            -------------------------------------------------------------
 C*            Get last non-blank char
 C*            -------------------------------------------------------------
 C                   eval      charseq = %triml(charseq)
 C                   eval      lastChar = %subst(charseq:1:1)
 C
 C
 C                   return    lastChar
 C
 P getLastChar     e    




此解决方案返回一个包含值的数组,但它们都是未定义的。为什么会这样?我错过了什么基本概念,任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

作为输入传递的数字是10.

您可以将for循环中的数字作为数字[i]访问,因此您实际上正在访问undefined数字的第i个位置。

将其更改为

newarray.push(i);

答案 1 :(得分:0)

您只需将i推送到newArray即可。 i这里已经是Number

此外,由于函数内的number变量是primitive而不是objectarray,因此number[i]会为您提供undefined因为它没有与i的值相对应的属性。

此外,最后一个不需要,因为它什么都不做。

function solution(number){
 var newarray = []
 for ( var i = 0 ; i < number - 1 ; i++ ) {
    if (i % 3 === 0) {
       newarray.push(i);
    } else if (i % 5 === 0) {
       newarray.push(i);
    } 
  }
  return newarray
}

solution(10);//returns [0, 3, 5, 6]

答案 2 :(得分:0)

function solution(number){
 var newarray = []
 for ( var i = 0 ; i < number - 1 ; i++ ) {
    if (i % 3 === 0) {
       newarray.push(i);
    } else if (i % 5 === 0) {
       newarray.push(i);
    } else {
       newarray
    }
  }
 return newarray;
} 

console.log(solution(10));