下划线js findWhere找到只有键值的对象

时间:2014-09-29 21:56:07

标签: 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] = fileName;}));

但这只是每次返回第一个值。使用该示例,每次都会返回{127.0.2.2:test.pdf}。 user和fileName是在有人上传后定义的,因此它们应该用当前信息覆盖(证明是正确的,因为它正确添加),但它仍然只是每次返回第一个键/值对。

如果这是有道理的,请告诉我。

1 个答案:

答案 0 :(得分:2)

正如Brennan在评论中所说,你应该使用_.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;})

以下是使用_.find方法的工作代码:

http://jsfiddle.net/g49urmef/1/