需要Lodash组合特性才能从数组中获取screenName

时间:2015-08-21 13:39:40

标签: javascript lodash

[{
    _id: 55 d5f0c8aead93d1d97f83c3,
    socialAuth: {
        linkedin: [],
        instagram: [],
        youtube: [],
        twitter: [{
            screenName: "Ammruth"
        }],
        facebook: []
    }
}, {
    _id: 55 d5f0c8aead93d1d97f83c3,
    socialAuth: {
        linkedin: [],
        instagram: [],
        youtube: [],
        twitter: [{
            screenName: "shamsher"
        }],
        facebook: []
    }
}]

我需要从上面的数组对象打印来自twitter内部数组对象的screenNames。

3 个答案:

答案 0 :(得分:1)

下面是一个vanilla JS方法。你真的不需要Lodash。

var names = [];
arr.forEach(function(user){
  names.push(user.socialAuth.twitter[0].screenName);
});

arr是您在上面列出的数据结构。

答案 1 :(得分:1)

这适用于每个用户的多个screenNames:

var twitters = _.pluck(data, 'socialAuth.twitter');
var accounts = _.flatten(twitters);
var names = _.pluck(accounts, 'screenName');

这种方法很慢;一个更有效的方法是:

var names = [];
_.each(data, function (a) {
    var theseNames = _.pluck(a.socialAuth.twitter, 'screenName');
    names = names.concat(theseNames);
});

请参阅:http://jsfiddle.net/0eqjcgcc/

答案 2 :(得分:1)

如果用户有多个屏幕名称,这也适用:

var users = [your array];
var screenNames = _(users).pluck('socialAuth.twitter').flatten().pluck('screenName').value().join(', ');

以字符串逗号和空格分隔返回屏幕名称列表 这是使用lodash v3.10.1

完成的