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