1

私はこれを理解しようと地獄を経験してきました、それはそれほど大したことではないと確信しています、おそらく私は一晩中コーディングに疲れていますが、私は本当にいくつかの助けを使うことができました...

「users」は、ユーザーアカウント情報(もちろんサーバー側)を含むデータベースのようなオブジェクトです。「get」は、users配列から一致するオブジェクトの配列を返す関数です。

var users = [
    {
        name:"xymon",   
            age:19,
        pass:"mypass",  
        time:1364101200684
    },
    {
        name:"test",    
            age:19,
        pass:"x",   
        time:1364101200993
    },
    {
            name:"test",
            age:19,
            pass:"bleh",
            time:1364101200992
    }

];

function get(a){

}

「get」で実行したいのは、配列内の指定されたオブジェクト(a)に一致するプロパティを返すことです。

var matching_users = get({name:"test",age:19});

これにより、「users」配列内の2つのオブジェクトが返されます。これは、それらのプロパティが「get」で指定されたプロパティと一致し、「matching_users」が次のように返されるためです。

[
    {
        name:"test",    
            age:19,
        pass:"x",time:1364101200993
    },
    {
            name:"test",
            age:19,
            pass:"bleh",
            time:1364101200992
    }

]
4

3 に答える 3

2

配列を繰り返し、各項目が一致するかどうかを確認します。

function get(a){
var r = [];
for (var i=0, len=users.length; i<len; ++i) {
    var doAdd = true;
    for (var p in a) {
        if (a.hasOwnProperty(p)) {
            if (a[p] != users[i][p]) {
                doAdd = false;
                break;
            }
        }            
    }    
    if (doAdd)
        r.push(users[i]);
}
return r;
}
于 2013-03-25T12:46:13.460 に答える
1
function get(a) {
  var matches = [];

  for (var i in users) {
     var matched = true;

     for (var prop in a) {
         if (a.hasOwnProperty(prop) && users[i][prop] !== a[prop]) {
             matched = false;
             break;
         }
     }

     if (matched) matches.push(users[i]);
  }

  return matches;
}
于 2013-03-25T12:47:13.610 に答える
0
 function get(a) {
 var result = [];
      users.forEach(function (v, i) {
           if (v.name == a.name && v.age == a.age) {
                result.push(v);               
           }
 });

結果は、一致したオブジェクトを含む配列になります。

于 2013-03-25T13:04:50.087 に答える