Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 JSON表匹配_Javascript_Database_Json - Fatal编程技术网

JavaScript JSON表匹配

JavaScript JSON表匹配,javascript,database,json,Javascript,Database,Json,我一直在拼命想弄明白这一点,我相信这没什么大不了的,也许我只是厌倦了整晚的编码,但我真的需要一些帮助 “users”是一个类似数据库的对象,包含用户帐户信息(当然是服务器端),“get”是一个函数,它从users数组返回匹配对象的数组 var users = [ { name:"xymon", age:19, pass:"mypass", time:1364101200684 }, {

我一直在拼命想弄明白这一点,我相信这没什么大不了的,也许我只是厌倦了整晚的编码,但我真的需要一些帮助

“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”数组中的两个对象,因为它们的属性与“get”中指定的属性匹配,因此“matching_users”将返回为

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

]

迭代数组并检查每个项是否匹配:

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;
}
函数get(a){
var r=[];
对于(var i=0,len=users.length;i

结果将是具有匹配对象的数组。

如果
Object.prototype
具有附加属性,则将进行冗余迭代
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;
}
 function get(a) {
 var result = [];
      users.forEach(function (v, i) {
           if (v.name == a.name && v.age == a.age) {
                result.push(v);               
           }
 });