在javascript中迭代一组对象并从该函数返回true

JZ.*_*JZ. 6 javascript arrays loops

我有一个名为collection的对象,我想测试一下justin是否是此集合的一部分.

collection = { 0:{screen_name:"justin"},1:{screen_name:"barry"}}
Run Code Online (Sandbox Code Playgroud)

我正在尝试发现最有效的方法,将名称传递给调用的函数present_user(user),以查看用户是否是集合的一部分而且我有点难过.

所以我的集合是由对象0,1,n + 1构成的.我正在尝试迭代这个集合.到目前为止我只测试[0]

function present_user(user) {
  collection[0]["screen_name"] == user -> return true in the case of "justin"
}
Run Code Online (Sandbox Code Playgroud)

如何迭代此集合的所有值,如果将user_name"justin"传递给函数,则返回true?

mVC*_*Chr 13

您的集合是一个对象而不是一个数组,所以这是一种方法:

var present_user = function(user){
    for (var k in collection) {
        if (collection[k]['screen_name'] == user) return true;
    }
    return false;
};
Run Code Online (Sandbox Code Playgroud)


bfa*_*tto 7

如果外部对象键都是数字,则应使用数组:

var collection = [{screen_name:"justin"}, {screen_name:"barry"}];
Run Code Online (Sandbox Code Playgroud)

然后迭代:

function present_user(user) {
    for(var i=0; i < collection.length; i++) {
        if(collection[i].screen_name === user) return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

你也可以循环对象集合(for..in参见mVChr的答案),但在这种情况下看起来你真的应该使用数组.