JS错误:stringtime.match不是函数吗?同时尝试将持续时间从“ 2h 3min”字符串转换为数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS错误:stringtime.match不是函数吗?同时尝试将持续时间从“ 2h 3min”字符串转换为数字相关的知识,希望对你有一定的参考价值。

我编写了此代码,并认为它是成功的。但是,当我在某些测试中运行它时,得到的结果是“ stringtime.match不是函数”。

[我正在尝试编写代码,在其中创建一个turnHoursToMinutes()函数,该函数接收一个数组作为参数,并且-用分钟替换每部电影的持续时间信息。我还需要返回一个包含有关电影的所有信息的新数组,这意味着我不应该修改原始数组。

let movies = [
  
    title: 'The Shawshank Redemption',
    year: '1994',
    director: 'Frank Darabont',
    duration: '2h 22min',
    genre: ['Crime', 'Drama'],
    rate: '9.3'
  ,
  
    title: 'The Godfather',
    year: '1972',
    director: 'Francis Ford Coppola',
    duration: '2h 55min',
    genre: ['Crime', 'Drama'],
    rate: '9.2'
  ,
  
    title: 'The Godfather: Part II',
    year: '1974',
    director: 'Francis Ford Coppola',
    duration: '3h 22min',
    genre: ['Crime', 'Drama'],
    rate: '9.0'
  
]

function turnHoursToMinutes(minutesArr) 
  let durationArr = minutesArr.map(currentItem => 
    let stringtime = currentItem.duration;
    let strnumbers = stringtime.match(/\d+/g);
    let numbers = strnumbers.map(Number);
    let minutes = 0;
    if (stringtime.includes("h") && stringtime.includes("min")) 
      minutes = (numbers[0] * 60) + numbers[1];
     else if (stringtime.includes("h")) 
      minutes = numbers[0] * 60;
     else if (stringtime.includes("min")) 
      minutes = numbers[1];
     
    currentItem.duration = minutes;
    return ...currentItem;
  );

  return durationArr;


console.log(turnHoursToMinutes(movies));

我在网上寻找解决方案,并尝试将一些建议应用于我的代码,但是我无法使其起作用:(另外,我以为我返回了一个新数组,但是仍然出现错误,表明我没有返回新数组...

我确保stringtime是一个字符串,就像一个解决方案所说的那样,但是我仍然无法使其正常工作。请帮助!

答案

检查this,如下所示:

match()方法检索将字符串与正则表达式匹配的结果。

因此,如果您传递的内容不是字符串,或者只是不放置具有属性duration的对象,它将引发错误。

您必须检查let stringtime = currentItem.duration;是否为空。

以上是关于JS错误:stringtime.match不是函数吗?同时尝试将持续时间从“ 2h 3min”字符串转换为数字的主要内容,如果未能解决你的问题,请参考以下文章

jquery.min.js:'jQuery.Deferred 异常:$(...).dialog 不是函数'错误

如何解决反应js中的“useRef不是函数错误”

Discord.js 错误“TypeError:channel.updateOverwrite 不是函数”

Discord.js 使用画布制作图像会引发错误 Canvas.createCanvas 不是函数

strophe.flxhr.js - 类型错误:this.func.prependArg 不是函数

Backbone.js 视图是不是需要 jQuery 或 Zepto? (或者:为啥我会收到“未捕获的类型错误:未定义不是函数”?)