我有一个列出所有用户的数组,每个新连接都会与他们上传的文件名一起添加到此数组中。两个人分别上传文件后的一个例子是:
[ '{ 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是在有人上传后定义的,因此它们应该用当前信息覆盖(证明是正确的,因为它正确添加),但它仍然只是每次返回第一个键/值对。
如果这是有道理的,请告诉我。
答案 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方法的工作代码: