【问题标题】:Search inside an array to see how many times each object has been used在数组中搜索以查看每个对象已使用了多少次
【发布时间】:2019-02-08 17:22:34
【问题描述】:

我们有 2 个数组,一个是 AnswersList[],它包含问题的所有可能答案。

我们将 AnswersList[] 拆分为 6 个单独的数组 {性别、年龄、残疾、种族、宗教、性取向}。如果我们使用genderList[]来解决这个问题。

主数组是 EqualityAnswers[],它是 IApplicantAnswers 类型。

import {IAnswers} from "../Enum/answer.model";
export interface IApplicantAnswers {
    ApplicantAnswersKey: number;
    CompetitionKey: number;
    Gender: IAnswers;
    Age: IAnswers;
    SexualOrientation: IAnswers;
    Religion: IAnswers;
    EthnicOrigin: IAnswers;
    Disability:IAnswers;
}

我们想要做的是检查同样是 IAnswer 类型的 genderList[]

export interface IAnswers {
    AnswerKey: number;
    QuestionKey: number;
    Name: string;
    Description: string;
}

所以我想做的是针对每种类型的 genderList[i].AnswerKey 我想看看有多少人在 EqualityAnswers[] 中选择了它。

最初我正在考虑循环遍历 genderList[],然后过滤 EqualityAnswers[].Gender.AnswerKey 并返回长度。

问题是将其分配给 ResourceList 数组

export class ResourceList {
    Name: string;
    Count: number;
}

调用genderCountList:ResourceList[];

这个想法是,genderCountList 将是 {name:"female", count:2}, {name:"male", count:5}, {name:"prefer not to say", count: 3}

然后我将能够使用它来动态构建我的表。这将允许我们在数据库级别添加答案。

唯一的问题是我有思维锁定,无法思考如何构建它。

【问题讨论】:

  • 我的建议是使用 Map (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 类型的类型来分组你的答案,如果你想有这个 {name:"female", count: 3} 作为性别地图的关键应该是性别,值是计数。如果性别之前没有定义,你将在你的地图中插入一个新的对,否则你将增加计数(值),在你可以生成数组之后
  • 感谢您对此的回复。所以我有点困惑。我将按如下方式使用它 `getGenderCount(): any { return this.genderList.map(function(item,index){ // 在这里我需要检查 item.Key 是否在 equalData.Gender 中以及有多少在将其存储到新的 item.Description 和 count 返回 item 数组之前发生的次数;}); }`
  • 完全正确.. 这样您只需遍历循环一次并同时构建所有过滤结果
  • 感谢您的帮助。我已经提出了答案,但如果您想发布答案,那么我会选择它作为答案。

标签: arrays typescript for-loop angular6


【解决方案1】:

因此,在 Ricardo 的帮助下,我非常感谢他的建议让我成功了。

 getListOfGendersWithCount(): void {
        var self = this;
        this.genderList.map(function (item, index) {

            var gender = new ResourceList();
            gender.Name = item.Description;
            gender.Count = self.equalityData.filter(x => x.Gender.AnswerKey === item.AnswerKey).length;

            self.genderCountList.push(gender);

            return item;
        });
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 2020-07-25
    • 1970-01-01
    • 2021-09-03
    • 2012-07-28
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多