首页 > 解决方案 > 减少数组javascript中的数组

问题描述

我有这个数据结构:

const data = [

{ id: 1, urlName: 'balance-at-work', 办公室: [ { location: 'Sydney, Australia', in_range: false }, ], }, { id: 2, urlName: 'spring-development', 办公室: [ { location: 'Banbury, Oxfordshire', in_range: true }, ], }, { id: 3, urlName: 'talent-lab', office: [ { location: 'México City, Mexico', in_range: false }, { location: 'London, UK', in_range: true }, ], }, ];

我想通过使用大圆距离公式来减少每个对象内的 office 数组。

到目前为止,我已经能够计算出大圆距离并dist在每个办公对象内添加一个键。我遇到的问题是一种干净的方法,可以在dist大于给定范围时为每个用户删除每个办公室阵列内的所有对象。

标签: javascriptarrays

解决方案


执行此操作的简单方法可能如下所示(is_office_in_range只是一个占位符,用于确定是否应包括办公室):

const data = [
  {
    id: 1,
    urlName: 'balance-at-work',
    offices: [
      {
        location: 'Sydney, Australia',
      },
    ],
  },
  {
    id: 2,
    urlName: 'spring-development',
    offices: [
      {
        location: 'Banbury, Oxfordshire, UK',
      },
    ],
  },
  {
    id: 3,
    urlName: 'talent-lab',
    offices: [
      {
        location: 'México City, Mexico',
      },
      {
        location: 'London, UK',
      },
    ],
  },
];

const is_office_in_range = (office) => office.location.endsWith('UK');

const res = data
  .map((company) => ({
    ...company,
    offices: company.offices.filter((office) => is_office_in_range(office))
  }))
  .filter((company) => company.offices.length);

console.log(res);


推荐阅读