我正在尝试从这个用户的示例对象输出唯一的语言名称:
var users = [
{
username: 'Alex',
favoriteLanguages: ['JavaScript', 'JavaScript', 'C++'],
},
{
username: 'Bob',
favoriteLanguages: ['JavaScript', 'JavaScript', 'PHP'],
},
{
username: 'Mia',
favoriteLanguages: ['JavaScript', 'JavaScript', 'JavaScript', 'JavaScript'],
},
{
username: 'David',
favoriteLanguages: ['C#', 'C++', 'JavaScript'],
},
{
username: 'Lee',
favoriteLanguages: ['JavaScript', 'JavaScript', 'Swift'],
}
];
我确实通过这样做输出了唯一的语言名称:
var users = [
{
username: 'Alex',
favoriteLanguages: ['JavaScript', 'JavaScript', 'C++'],
},
{
username: 'Bob',
favoriteLanguages: ['JavaScript', 'JavaScript', 'PHP'],
},
{
username: 'Mia',
favoriteLanguages: ['JavaScript', 'JavaScript', 'JavaScript', 'JavaScript'],
},
{
username: 'David',
favoriteLanguages: ['C#', 'C++', 'JavaScript'],
},
{
username: 'Lee',
favoriteLanguages: ['JavaScript', 'JavaScript', 'Swift'],
}
];
function allLanguages() {
var temp = {} // changed
var final = []
users.forEach(function(val){
for(var i in val["favoriteLanguages"]){
var l = val["favoriteLanguages"]
if(typeof(temp[l[i]]) == "undefined"){
final.push(l[i])
}
temp[l[i]] = 0
console.log(temp)
}
})
//console.log("temp: " + temp)
//console.log("final: " + final)
}
allLanguages();
但是,我不明白为什么我会立即在temp
中获得完整的语言对象,从迭代0开始......它开始从控制台输出到:
[JavaScript: 0]
C#
:
0
C++
:
0
JavaScript
:
0
PHP
:
0
Swift
:
0
而且我真的不明白,不应该一个一个地输出,所以每个[l[i]]
说出来,而不是所有这些都是马上......我实际上不明白现在我如何能够在final
中输出正确的结果。
非常感谢您理解这一点。
答案 0 :(得分:0)
在检查此属性是否存在以及是否为数组之后,您可以使用对象作为哈希表来收集语言并使用另一个html
作为单个用户的语言。
在回调内部使用语言为属性分配forEach
,最后获取哈希表的键并返回所有语言。
true