Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要Lodash组合属性才能从数组中获取屏幕名_Javascript_Lodash - Fatal编程技术网

Javascript 需要Lodash组合属性才能从数组中获取屏幕名

Javascript 需要Lodash组合属性才能从数组中获取屏幕名,javascript,lodash,Javascript,Lodash,我需要从上面的数组对象打印twitter内部数组对象的屏幕名。下面是一种普通的JS方法。你真的不需要洛达斯 [{ _id: 55 d5f0c8aead93d1d97f83c3, socialAuth: { linkedin: [], instagram: [], youtube: [], twitter: [{ screenName: "Ammruth" }],

我需要从上面的数组对象打印twitter内部数组对象的屏幕名。

下面是一种普通的JS方法。你真的不需要洛达斯

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

上面列出的数据结构是
arr

这适用于每个用户的多个屏幕名:

var names = [];
arr.forEach(function(user){
  names.push(user.socialAuth.twitter[0].screenName);
});
这个方法很慢;更有效的方法是:

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);
});
以字符串逗号和空格分隔的形式返回屏幕名称列表。

这是使用lodash v3.10.1完成的,谢谢你的回答,兄弟,但是我在数组中没有定义。这段代码未经测试。给我一分钟试试。有没有可能不用将名称放入数组,而是将其放入一个字符串中。例如“Amruth,Shamsher”@keizomYes,在循环之后,您可以执行
names.join(',')使用修复程序更新了答案。感谢bro的回答,有没有可能不将姓名放入数组,而是将其放入一个字符串中。像“Amruth,Shamsher”一样,您可以创建姓名。join(“,”)-但这是假设您只有名/姓组合,而没有长的姓名列表
var users = [your array];
var screenNames = _(users).pluck('socialAuth.twitter').flatten().pluck('screenName').value().join(', ');