【问题标题】:How to trimStart multiple strings in LoDash/Underscore?如何在 LoDash/Underscore 中修剪多个字符串?
【发布时间】:2016-03-03 07:50:07
【问题描述】:

我有这样的事情:

[
  {
    name: 'Mr. Foo'
  },
  {
    name: 'Mrs. Bar'
  }
]

编辑:

我正在寻找修剪“先生”的最有效方法和“夫人”一次火灾中的字符串可能使用 LoDash 或 Underscore 来获得关注:

[
  {
    name: 'Foo'
  },
  {
    name: 'Bar'
  }
]

我正在寻找类似_.trimStart[ name, ['Mr.','Mrs.'] ]的函数

谢谢

【问题讨论】:

  • 正则表达式替换为 for 循环或 Lodash 循环
  • “我正在寻找最有效的方法” - 不,你不是。您正在寻找为您写下来的人。
  • @Tomalak 我本可以写_.trimStart[name, 'Mr.'] 和_.trimStart[name, 'Mrs.'] 但这不会有效地每次调用两个函数。我正在尝试减少函数调用的数量。
  • 我明白了,但你太担心了。根据您的真实数据进行衡量,我敢打赌它不会很慢。然后取你通常期望的对象数量的 10 倍,我敢打赌它仍然不会慢。
  • @Tomalak 谢谢,这给了我挑战和信心。我一定会学到更多。我还有很多东西要学。而且我认为我提出了错误/令人困惑的问题。

标签: javascript underscore.js lodash


【解决方案1】:

正则表达式可以做到这一点,但是lodash不是必需的。

input.forEach(function (item) {
    item.name = item.name.replace(/^(Mrs\.|Mr\.)\s*/i, '');
});

【讨论】:

    【解决方案2】:

    也许你正在寻找:

    var titles = [];
    _.each(people, function(person){
        titles.push(person.name.split('.')[0])
    });
    

    【讨论】:

    • 这是非常有趣的解决方案。对不起,我提出了一半的问题。请查看编辑。
    猜你喜欢
    • 2017-10-16
    • 2012-12-21
    • 2019-03-03
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2014-07-29
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多