【问题标题】:Get data from array of object using a another array [closed]使用另一个数组从对象数组中获取数据[关闭]
【发布时间】:2021-10-09 16:54:42
【问题描述】:

我有两个这样的分隔数组

 ages = [20,40,60];

 doctors = [{
  "name": "Moruu",
  "age": 18,
  "sex": "Male",
  "region": "Africa"
},
{
  "name": "Kholi",
  "age": 19,
  "sex": "Male",
  "region": "Asia"
},
{
  "name": "Natali",
  "age": 20,
  "sex": "Female",
  "region": "Europe"
},
{
  "name": "Mia",
  "age": 30,
  "sex": "Female",
  "region": "Europe"
},
{
  "name": "Sonu",
  "age": 20,
  "sex": "Male",
  "region": "Asia"
},
{
  "name": "Mark",
  "age": 30,
  "sex": "Male",
  "region": "Africa"
},
{
  "name": "Surith",
  "age": 25,
  "sex": "Female",
  "region": "Africa"
}]

首先我需要使用“ages”数组创建年龄范围数组

[{
  "range": "0 - 19",
  "count": 0,
},
{
  "range": "20 - 39",
  "count": 0,
},
{
  "range": "40 - 59",
  "count": 0,
},
{
  "range": "60 - 100",
  "count": 0,
}
];

之后从“医生”数组中需要得到该年龄段以下的相关医生,需要像这样增加计数。

[{
  "range": "0 - 19",
  "count": 2,
},
{
  "range": "20 - 39",
  "count": 5,
},
{
  "range": "40 - 59",
  "count": 0,
},
{
  "range": "60 - 100",
  "count": 0,
}
];

【问题讨论】:

  • 请展示你的尝试。
  • 嗨,欢迎来到 SO。请花时间阅读tourHow to Ask。本网站旨在帮助您解决您面临的具体问题,而不是从头开始编写完整的解决方案。
  • 我正在尝试使用 reduce 方法。但做不到。
  • “我正在尝试使用 reduce 方法” - 分享一下。那总比什么都不显示要好

标签: javascript jquery arrays


【解决方案1】:

你可以这样做:

const ages = [20,40,60];
let min = 0;
const ranges = ages.map((age) => {
  const max = age - 1; 
  range = {
    "range": min + " - " + max,
    "min": min,
    "max": max,
    "count": 0
  };
  min = age;
  return range;
});
ranges.push({"min":min, "max":99, "count":0, "range": min + " - 99"});

const doctors = [{
  "name": "Moruu",
  "age": 18,
  "sex": "Male",
  "region": "Africa"
},
{
  "name": "Kholi",
  "age": 19,
  "sex": "Male",
  "region": "Asia"
},
{
  "name": "Natali",
  "age": 20,
  "sex": "Female",
  "region": "Europe"
},
{
  "name": "Mia",
  "age": 30,
  "sex": "Female",
  "region": "Europe"
},
{
  "name": "Sonu",
  "age": 20,
  "sex": "Male",
  "region": "Asia"
},
{
  "name": "Mark",
  "age": 30,
  "sex": "Male",
  "region": "Africa"
},
{
  "name": "Surith",
  "age": 25,
  "sex": "Female",
  "region": "Africa"
}];

ranges.forEach((range) => {
  const docs = doctors.filter((d) => d.age >= range.min && d.age <= range.max);
  range.count = docs.length;
});
console.log(ranges);

【讨论】:

  • 是的。谢谢。你能分享一下我们如何使用“ages”数组创建“ranges”数组吗?
  • 我更新了答案
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 2023-02-20
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
相关资源
最近更新 更多