javascript - 在调用我创建的新函数内部创建的函数时如何修复不是函数错误

标签 javascript arrays function

我正在创建两个函数,它们将接受一个数组并像这样反转索引和字符

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

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

我尝试创建的第二个函数 (completeReversal) 将像上面的示例一样通过对数组的每个元素调用 reverseCharacters 函数来完全反转数组,然后反转数组中的项目并将它们添加到新的空数组将显示为输出。

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

我曾尝试在调用 reverseCharacters 函数之前将数组转换为字符串,但无论哪种方式,似乎仍然出现 is not a function 错误。

// 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']));

最佳答案

您以错误的方式调用函数,因为 sampleArray 是普通数组并且其原型(prototype)上没有任何名为 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']));

关于javascript - 在调用我创建的新函数内部创建的函数时如何修复不是函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57645660/

相关文章:

javascript - 如果包含在数组中,则从字符串中删除单词?

javascript - JavaScript 函数的 URL 中的 PHP 变量问题

javascript - 如何使用 Javascript/JQuery 生成表单中所有输入名称 =""字段的列表

bash 函数从 sed 传递空格和行分隔的参数

jquery - css div 显示 :none reseting and showing divs when function is called

javascript - 如何在 Angularjs 1.4.10 指令结构中使用 $apply 和 $watch 这样的?

javascript - Discord.js:检查机器人权限

arrays - 如何找到数组中 N 个元素的所有可能和?

arrays - 如何使用 Swift 从关联数组中获取值

arrays - Bash shell 脚本 : How to replace characters at specific byte offsets