我一整天都在网上搜索,似乎无法找到答案。 (我知道必须有一种方法可以在javascript中执行此操作。)
基本上,我希望能够搜索一个对象数组并返回具有我需要的信息的对象。
示例:
每次有人连接到服务器时:
var new_client = new client_connection_info(client_connect.id, client_connect.remoteAddress, 1);
function client_connection_info ( socket_id, ip_address, client_status) {
this.socket_id=socket_id;
this.ip_address=ip_address;
this.client_status=client_status; // 0 = offline 1 = online
};
现在,我希望能够搜索" client_connection.id"或" ip_address",然后调出该对象并能够使用它。例如:
var results = SomeFunction(ip_address, object_to_search);
print_to_screen(results.socket_id);
我是javascript的新手,这对我很有帮助!
答案 0 :(得分:0)
你有什么尝试?您是否考虑过从JSON转换数据并像在字典中一样查找? (如果您不知道,那将看起来像object ['ip_address'])
jQuery具有此jQuery.parseJSON(对象)的函数。
答案 1 :(得分:0)
听起来你只是想要一个选择器方法,假设我理解你的问题:
function where(array, predicate)
{
var matches = [];
for(var j = 0; j < array.length; j++)
if(predicate(j))
matches.push(j);
return matches;
}
然后你可以简单地这样称呼它:
var sample = [];
for(var j = 0; j < 10; j++)
sample.push(j);
var evenNumbers = where(sample, function(elem)
{
return elem % 2 == 0;
});
如果您想查找特定项目:
var specificguy = 6;
var sixNumber = where(sample, function(elem)
{
return elem == specificguy;
});
答案 2 :(得分:0)
您将需要循环遍历数组,并在找到所需对象时停止。
var arr = [new_client, new_client2, new_client3]; // array of objects
var found; // variable to store the found object
var search = '127.0.0.1'; // what we are looking for
for(var i = 0, len = arr.length; i < len; i++){ // loop through array
var x = arr[i]; // get current object
if(x.ip_address === search){ // does this object contain what we want?
found = x; // store the object
break; // stop looping, we've found it
}
}