我有以下数组:
[
{
"name":"John Smith"
},
{
"name":"Mary Kay"
},
{
"name":"Peter Pan"
},
{
"name":"Ben Franklin"
}
];
如何使用lodash获取所有第一个字符串名称,例如:
result = ["John", "Mary", "Peter", "Ben"]
答案 0 :(得分:2)
使用JavaScript Array#map
和String#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)
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;
答案 4 :(得分:0)
如果您喜欢短代码(使用参数解构来提取名称):
result = _.map(data, ({name}) => _.words(name)[0]);