Javascript - 如何按参数过滤对象数组

Javascript - How to filter an array of Objects by a Parameter

本文关键字:过滤 对象 数组 参数 何按 Javascript      更新时间:2023-09-26

我有一个变量,它是一个注释数组。

$scope.numOfCommentsCoupon

我想要的是一个变量,它是数组中具有某个值的"couponId"的注释计数。

这是注释模型

    var CommentSchema = new Schema({
    created: {
        type: Date,
        default: Date.now
    },
    couponId: {
        type: String,
        trim: true
    }
});

所以我需要过滤它,然后计数它,但我不确定如何。

如果你有一系列的注释,要做到这一点,你可以做这样的事情

var count = 0;
comments.filter(function(comment,index,array){
    if (comment.couponId === "some_value") {
        count++;
    }
});

或者你可以使用 for 循环迭代它。要实现的非常简单的东西

我想

我遵循您要做的事情,您可以使用array.filter

它看起来像这样:

var currentCouponId = 1;
var matching = yourArray.filter(function (element) { return element.couponId == 1; });
console.log(matching.length);

> 您可以在数组上使用reduce方法来获取couponId等于给定字符串的优惠券计数:

var comments = [
    {
        couponId : "1"
    },
    {
        couponId : "2"
    }
];
var couponIdToCount = "2";
var count = comments.reduce(function(previous, current) {
    return current.couponId == couponIdToCount ? previous + 1: previous;
}, 0);
console.log(count)