Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 下划线js findWhere find对象,仅包含键值_Javascript_Node.js - Fatal编程技术网

Javascript 下划线js findWhere find对象,仅包含键值

Javascript 下划线js findWhere find对象,仅包含键值,javascript,node.js,Javascript,Node.js,我有一个列出所有用户的数组,每个新连接都会与他们上载的文件名一起添加到此数组中。两个人分别上传了一个文件后的一个例子是: [ '{ 127.0.2.2: test.pdf}', '{ 127.0.0.1: asf.pdf}' ] 我如何返回仅包含IP的文件名?如果需要,如果返回IP+文件名有效,我可以稍后拆分文件名 我试过: console.log(_.findWhere(userlist, function(){ var tempObj = {}; return tempObj[user]

我有一个列出所有用户的数组,每个新连接都会与他们上载的文件名一起添加到此数组中。两个人分别上传了一个文件后的一个例子是:

[ '{ 127.0.2.2: test.pdf}', '{ 127.0.0.1: asf.pdf}' ]
我如何返回仅包含IP的文件名?如果需要,如果返回IP+文件名有效,我可以稍后拆分文件名

我试过:

console.log(_.findWhere(userlist, function(){ var tempObj = {}; return tempObj[user] = fileName;}));
但每次只返回第一个值。使用这个例子,它每次都会返回{127.0.2.2:test.pdf}。用户和文件名是在某人上传后定义的,因此它们应该用当前信息覆盖(这被证明是正确的,因为它正确地添加了这些信息),但每次它仍然只返回第一个键/值对


让我知道这是否有意义。

正如Brennan在评论中所说的,您应该使用u.find而不是您当前的代码

var userlist = [ { '127.0.2.2': 'test.pdf'}, { '127.0.0.1': 'asf.pdf'} ];

var ip = '127.0.0.1';

var userWithIp = _.find(userlist, function(f){ return Object.keys(f)[0] === ip;})
下面是使用u.find方法的工作代码:


下划线的findWhere不使用函数作为第二个参数,而是使用文字字符串,这不适用于作为变量搜索用户。将我正在搜索的内容放在函数中似乎比仅{user:fileName}更接近,因为它们都不包含{user:fileName}。事实上。因此,请使用正确的函数,
\ufind
。\ufind仍然会给出第一个结果。除非这是通过端口转发从外部测试我的VM的问题。。。[{10.0.0.2:test.pdf},{127.0.0.1:asf.pdf}]->{10.0.0.2:test.pdf}即使使用127.0.0.1…它看起来也像:
.find(userList,function(user){return user.indexOf(fileName)>-1}。请注意,您的数据有点奇怪,因为它只是一个字符串,而不是JSON或其他东西,因此使用indexOf搜索