【问题标题】:Lodash create an array from an array using a value of one characterLodash 使用一个字符的值从一个数组创建一个数组
【发布时间】:2016-05-22 01:45:01
【问题描述】:

我有一个包含以下内容的数组,

var people = [{
    _id: 0,
    name: 'Joe'
}, {
    _id: 1,
    name: 'Jim'
}, {
    _id: 2,
    name: 'Mary'
}];

所以对于 lodash,我想从 people 创建一个数组,其中名称包含 J 任何想法?

例如:

var newPeople = _.filter(people, function(person) {
    return _.contains('J', person.name);
});

甚至更好:

var newPeople = _(people).map(_.unary(_.partialRight(_.contains, 'J', 'name'))).value();

上述的任何功能版本都会很棒。提前致谢。

【问题讨论】:

  • 功能版本是什么意思,您拥有的第一个实现非常实用,并且工作和“阅读”很棒。你为什么不用那个? :)
  • 哦,Lodash 没有 _.contains,这就是为什么 .. :).. 好吧

标签: javascript arrays node.js lodash


【解决方案1】:

这行得通:

var newPeople = _.filter(people, function(person) {
    return person.name.indexOf('J') >= 0;
});

对于您的其他方式:

var contains = function (obj, str, elem) {
    if (obj[elem].indexOf(str) >= 0) {
        return obj;
    }
    return;
}

newPeople = _(people).map(_.unary(_.partialRight(contains, 'J', 'name'))).compact().sortBy('name').value();

【讨论】:

  • 我该如何排序?
  • var newPeople = _.chain(people).filter(function(person) { return person.name.indexOf('J') >= 0; }).sortBy('name').value(); ?
  • 无论如何我可以将所有这些链接到一个作业中?
【解决方案2】:

比较不需要 lodash。例如,这有效:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.js"></script>
<script>
  var people = [{
    _id: 0,
    name: 'Joe'
  }, {
    _id: 1,
    name: 'Jim'
  }, {
    _id: 2,
    name: 'Mary'
  }];
  var newPeople = _.filter(people, function(person) {
    return person.name.indexOf('J') > -1;
  });
  console.log(newPeople);
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2017-05-06
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多