获取数组对象中的所有第一个字符串

时间:2017-02-10 08:15:48

标签: lodash

我有以下数组:

[
        {
            "name":"John Smith"
        },
        {
            "name":"Mary Kay"
        },
        {
            "name":"Peter Pan"
        },
        {
            "name":"Ben Franklin"
        }
    ];

如何使用lodash获取所有第一个字符串名称,例如:

result = ["John", "Mary", "Peter", "Ben"]

5 个答案:

答案 0 :(得分:2)

使用JavaScript Array#mapString#split方法。

var data = [{
  "name": "John Smith"
}, {
  "name": "Mary Kay"
}, {
  "name": "Peter Pan"
}, {
  "name": "Ben Franklin"
}];

console.log(
  // iterate over the array to generate result array
  data.map(function(v) {
    // split the value by space and return first element
    return v.name.split(' ')[0];
  })
)

// with  ES6 arrow function 
console.log(
  data.map(v => v.name.split(' ')[0])
)

答案 1 :(得分:2)

这是一个使用lodash'flow()的替代方案,它执行property()来获取对象中每个项目的属性(例如name),words(),将字符串拆分为单词(数组),最后将first()拆分为数组中的第一项。

var result = _.map(source, _.flow(_.property('name'), _.words, _.first));

var source = [{
  "name": "John Smith"
}, {
  "name": "Mary Kay"
}, {
  "name": "Peter Pan"
}, {
  "name": "Ben Franklin"
}];

var result = _.map(source, _.flow(_.property('name'), _.words, _.first));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

以上解决方案的另一个实现不使用flow()property()

var result = _.map(source, function(item) {
  return _(item.name).words().first();
});

var source = [{
  "name": "John Smith"
}, {
  "name": "Mary Kay"
}, {
  "name": "Peter Pan"
}, {
  "name": "Ben Franklin"
}];

var result = _.map(source, function(item) {
  return _(item.name).words().first();
});

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

答案 2 :(得分:1)

    console.log(_.map(data, function(item){
        return _.split(item.name,' ',1)[0];
    }));

答案 3 :(得分:0)

&#13;
&#13;
var t = [
        {
            "name":"John Smith"
        },
        {
            "name":"Mary Kay"
        },
        {
            "name":"Peter Pan"
        },
        {
            "name":"Ben Franklin"
        }
    ];
    var result = [];
    t.forEach(function(element) {
       result.push(element.name)
    });
    console.log(result)
&#13;
&#13;
&#13;

答案 4 :(得分:0)

如果您喜欢短代码(使用参数解构来提取名称):

result = _.map(data, ({name}) => _.words(name)[0]);