underline-js-findWhere查找只有键值的对象

underscore js findWhere find object with just key value

本文关键字:对象 键值 查找 underline-js-findWhere      更新时间:2023-09-26

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

[ '{ 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.0.2:test.pdf}。user和fileName是在某人上传后定义的,因此它们应该用当前信息覆盖(事实证明这是正确的,因为它正确地添加了它),但每次仍然只返回第一个键/值对。

让我知道这是否合理。

正如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/