在我创建的新函数中调用创建的函数时,如何解决不是函数错误

时间:2019-08-25 11:36:43

标签: javascript arrays function

我正在创建两个函数,它们将使用一个数组并反转索引和类似的字符

输入:['apple','potato','Capitalized Words'] 输出:['sdroW dezilatipaC','otatop','elppa']

我创建的第一个函数(reverseCharacters)反转字符串的字符。

我尝试创建的第二个函数(completeReversal)将完全反转数组,如上面的示例,方法是在数组的每个元素上调用reverseCharacters函数,然后反转数组中的项并将它们添加到新的空数组中将会显示为输出。

在我的completeReversal函数中,我能够反转数组中的元素,但是不能调用我的reverseCharacters函数来反转字符。我不断收到“不是函数错误”

在调用reverseCharacters函数之前,我曾尝试将数组转换为字符串,但似乎仍然无法获得函数错误。

// Code reverseCharacters here:
function reverseCharacters(str){
  if (typeof str == 'string' ){
     return str.split('').reverse().join('');
  } else if (typeof str == 'number'){
     str = String(str);
     str = str.split('').reverse().join('');
     return Number(str);
  }
}

// Code complete()Reversal here:
function completeReversal(sampleArray){
    let emptyArray = [];
    sampleArray.reverse();

      for (i = 0; i < sampleArray.length; i++ ){
       emptyArray.push(sampleArray[i]);
       sampleArray.reverseCharacters();

  }
    return sampleArray;
}
    console.log(completeReversal(['apple', 'potato', 'Capitalized Words']));

2 个答案:

答案 0 :(得分:1)

您以错误的方式调用函数,因为sampleArray是普通数组,并且在原型上没有任何名为reverseCharacters的方法,因此您不能像这样

sampleArray.reverseCharacters();

您需要像这样调用函数

 emptyArray.push(reverseCharacters(sampleArray[i]));

还从函数中返回emptyArray变量

// Code reverseCharacters here:
function reverseCharacters(str) {
  if (typeof str == 'string') {
    return str.split('').reverse().join('');
  } else if (typeof str == 'number') {
    str = String(str);
    str = str.split('').reverse().join('');
    return Number(str);
  }
}

// Code complete()Reversal here:
function completeReversal(sampleArray) {
  let emptyArray = [];
  sampleArray.reverse();

  for (i = 0; i < sampleArray.length; i++) {
    emptyArray.push(reverseCharacters(sampleArray[i]));
  }
  return emptyArray;
}
console.log(completeReversal(['apple', 'potato', 'Capitalized Words']));


替代方案和较短的解决方案可以是

const completeReversal = (arr) => {
  return arr.reverse().map(str => str.split('').reverse().join(''))
}

console.log(completeReversal(['apple', 'potato', 'Capitalized Words']));

答案 1 :(得分:0)

尝试

var array = ['apple', 'potato', 'Capitalized Words'];

var reverseArray = array.reverse();
var reversedStringArray = [];
reverseArray.map((d,i)=>{
  reversedStringArray.push(d.split('').reverse().join(''));
});

console.log(reversedStringArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>