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