计算来自对象Lodash的看不见的消息

时间:2018-02-17 19:20:52

标签: node.js lodash

我正试图从lodash中的对象中获取看不见的消息。

下面是我的对象

[
  "conversation_id": "5a88779b2321141f2864e484"
  "messages": [
            {
                "message_id": "5a88779b2321141f2864e483",
                "sender_uid": 2,
                "receiver_uid": 1,
                "created": "2018-02-17T18:42:35.252Z",
                "status": 1,
                "delivered": false,
                "seen": true,
            }
     ]

]

我想了解seen: false条消息

2 个答案:

答案 0 :(得分:1)

您可以使用filter获取所有see = false条消息,然后查看长度

var users = {
"conversation_id": "5a88779b2321141f2864e484",
"messages": [
    { "message_id": "5a88779b2321141f2864e483","sender_uid": 2,"receiver_uid": 1,"created": "2018-02-17T18:42:35.252Z","status": 1,"delivered": false,"seen": true,},
    { "message_id": "5a88779b2321141f2864e483","sender_uid": 2,"receiver_uid": 1,"created": "2018-02-17T18:42:35.252Z","status": 1,"delivered": false,"seen": false },
    { "message_id": "5b88779b2321141f2864e483","sender_uid": 2, "receiver_uid": 1, "created": "2018-02-17T18:42:35.252Z", "status": 1,"delivered": false,"seen": false,}
]
}


var unseen_messages = _.filter(users.messages, message => { return !message.seen; }).length;
console.log(unseen_messages);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

如果没有lodash,您可以使用reduce

var users = {
    "conversation_id": "5a88779b2321141f2864e484",
    "messages": [
        { "message_id": "5a88779b2321141f2864e483","sender_uid": 2,"receiver_uid": 1,"created": "2018-02-17T18:42:35.252Z","status": 1,"delivered": false,"seen": true,},
        { "message_id": "5a88779b2321141f2864e483","sender_uid": 2,"receiver_uid": 1,"created": "2018-02-17T18:42:35.252Z","status": 1,"delivered": false,"seen": false },
        { "message_id": "5b88779b2321141f2864e483","sender_uid": 2, "receiver_uid": 1, "created": "2018-02-17T18:42:35.252Z", "status": 1,"delivered": false,"seen": false,}
    ]
}

items = users.messages;
var totalCount = items.reduce((total, obj) => { return (!obj.seen) ? (total +1) : total }, 0);
console.log(totalCount);

答案 1 :(得分:0)

_。sumBy会做的伎俩

const unseenMessages = _.sumBy(users.messages, message => message.seen === false);