Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 查找对象并基于搜索条件返回它_Javascript_Arrays_Javascript Objects - Fatal编程技术网

Javascript 查找对象并基于搜索条件返回它

Javascript 查找对象并基于搜索条件返回它,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我整天都在网上搜索,似乎找不到我的答案。(我知道一定有办法用javascript实现这一点) 基本上,我希望能够搜索一组对象,并返回包含所需信息的对象 例如: var results = SomeFunction(ip_address, object_to_search); print_to_screen(results.socket_id); 每次有人连接到服务器时: var new_client = new client_connection_info(client_connect.id,

我整天都在网上搜索,似乎找不到我的答案。(我知道一定有办法用javascript实现这一点)

基本上,我希望能够搜索一组对象,并返回包含所需信息的对象

例如:

var results = SomeFunction(ip_address, object_to_search);
print_to_screen(results.socket_id);
每次有人连接到服务器时:

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\u connection.id”或“ip\u address”,并调出该对象并能够使用它。例如:

var results = SomeFunction(ip_address, object_to_search);
print_to_screen(results.socket_id);

我是javascript新手,这对我帮助很大

你试过什么?您是否考虑过从JSON转换数据并像在字典中一样查找它?(如果您不知道,它看起来像对象['ip_地址])


jQuery有一个用于此jQuery.parseJSON(对象)的函数。

听起来您只是想要一个选择器方法,假设我正确理解了您的问题:

 function where(array, predicate)
 {
     var matches = [];
     for(var j = 0; j < array.length; j++)
        if(predicate(j))
           matches.push(j);

     return matches;
 }

您需要在数组中循环,并在找到所需对象时停止

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
    }
}
var arr=[new_client,new_client2,new_client3];//对象数组
找到变量;//变量来存储找到的对象
变量搜索='127.0.0.1';//我们在找什么
对于(vari=0,len=arr.length;i
JSON是JavaScript对象的字符串表示形式。你建议他使用JavaScript对象,而不是JSON。没关系。当人们把它们混在一起的时候,我觉得有点烦:-PHow会
parseJSON
在这里帮忙吗?他哪里都没有JSON字符串。@Rocket,我读了“数组的对象”并立即想到了“JSON”,但现在我重新读了一遍,我对OP正在获取/搜索的对象有点困惑。OP说的是“数组的对象”,但我在示例对象的任何地方都没有看到数组。哦,你是说“物体阵列”吗?哦,好的。是的,这是一个很大的不同:)火箭的答案应该有效,但我很好奇为什么你的答案无效。你没有JSFIDLE,是吗?你的
对象搜索
是什么样子的?你需要做一个循环,循环每个元素,检查
ip地址
是否相同。你的例子是可行的,但我必须知道从哪个对象搜索,对吗?如果是,这是否意味着我必须制作链表?为了能够完成我所需要的。你通过“从哪个对象搜索”和“制作链接列表”来做什么?如果我这样做了:A=新客户机连接信息(1,1,1)&B=新客户机连接信息(2,2,2),我将不得不使arr=[A,B],但如果我已经知道A和B,那么我就不必搜索它们了。所以,我需要做的是使arr=client\u connection\u info的所有对象,并搜索所有这些对象以找到匹配项。链接列表(链接列表):@user1328762:无法将
client\u connection\u info
的所有对象都放到一个数组中。获取
client\u connection\u info
对象数组的唯一方法是创建一个数组,并将对象推入其中。JavaScript中没有链表,只有对象和数组。@user1328762:如果你知道这些对象,为什么一开始就问这个问题?如果你已经有了你的对象,为什么要搜索它?我真的很困惑>。
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
    }
}