如何通过字符串的一部分找到对象?

时间:2015-12-04 06:25:36

标签: javascript underscore.js

我在数组中有这样的对象:

{
  "objectId": "566013c860b202595a4b6fd9",
  "createdAt": "2015-12-03T10:04:56.367Z",
},

我使用下划线_.where根据createAt找到它们:

var adminsThisMonth = _.where(admins, {createdAt: adminCreatedAt})

有没有办法只根据createdAt的一个部分找到一个对象,比如连字符之间的两位数? (在这种情况下为12)。

4 个答案:

答案 0 :(得分:2)

使用_.filter()可以传递谓词函数,以使用您想要的任何逻辑过滤对象。

_.filter(admins, function (obj) {
    return checkConditon(obj.created);
});

答案 1 :(得分:1)

var obj = {
  "objectId": "566013c860b202595a4b6fd9",
  "createdAt": "2015-12-03T10:04:56.367Z",
};

if(obj.hasOwnProperty("createdAt") && obj.createdAt.indexOf("-12-")>-1){
   ...
} 

首先检查是否有密钥以及是否有该密钥,然后检查-12-的索引

答案 2 :(得分:1)

使用方法find,它类似于where但是将函数作为第二个参数。然后在该函数中使用@Tushar中的建议代码。

_.find(admins, function(admin) { 
    return admin.createdAt.indexOf('-12-') > -1;
});

答案 3 :(得分:1)

使用像这样的普通JS:

var admins =[
    {
      "objectId": "566013c860b202595a4b6fd9",
      "createdAt": "2015-12-03T10:04:56.367Z",
    }
]


var checkCreatedAt = (admins.map(function(obj){ return obj.createdAt; }).toString().indexOf("-12-") != -1) ? true : false;

...然后您可以根据需要使用checkCreatedAt