我是TS新手 我有一个数据数组,如下所示

const AllJobs = [
      {
        title: Teller,
        salary: ["Hourly"],
        industries: [
          "Accounting",
          "Banking",
          "Data"
        ]
      },
      {
        title: Scientist,
        salary: ["Yearly"],
        industries: [
          "Biology",
          "Chemicals",
          "Science"
        ]
      },
        {
        title: Artist,
        salary: ["Hourly"],
        industries: [
          "Design",
          "Paint",
          "Color"
        ]
      },
    ];

let desiredSkills = ["Design","Accounting","Data"];

我想循环遍历AllJobs数组中"Industries"中的数据,并判断其中是否有任何值与desiredSkills中的任何值匹配.如果没有匹配值,则过滤掉该对象.我根本不知道我做得对不对.

预期结果:

 const AllJobs = [
          {
            title: Teller,
            salary: ["Hourly"],
            industries: [
              "Accounting",
              "Banking",
              "Data"
            ]
          },
            {
            title: Artist,
            salary: ["Hourly"],
            industries: [
              "Design",
              "Paint",
              "Color"
            ]
          },
        ];

以下是我之前的代码.这目前并不奏效.

const getSuggested = (item: string) => {
   const filterIndustry = this.allJobs.filter((x:any) => x['industries'].every((y: string | any[])=> y.includes(item)));
  };
this.desiredIndustries.forEach(getSuggested);

我也试过了

 const getSuggested = (item: string) => {
 let k = item;

 const data = this.allJobs.filter((item: { industries: any }) => item.industries == k);
 console.log(data);
 };
 this.desiredIndustries.forEach(getSuggested);

推荐答案

您在这里并不真正需要打字脚本,所以这里有一个JS解决方案:

const AllJobs = [{
    title: 'Teller',
    salary: ['Hourly'],
    industries: ['Accounting', 'Banking', 'Data'],
  },
  {
    title: 'Scientist',
    salary: ['Yearly'],
    industries: ['Biology', 'Chemicals', 'Science'],
  },
  {
    title: 'Artist',
    salary: ['Hourly'],
    industries: ['Design', 'Paint', 'Color'],
  },
];

let desiredSkills = ['Design', 'Accounting', 'Data'];

const result = AllJobs.filter(({
  industries
}) => industries.find((industry) => desiredSkills.includes(industry)));

console.log(result);

应该很容易翻译成TS.希望它能帮上忙!

Javascript相关问答推荐

在拖放时阻止文件打开

Chart.js 4.4.2,当悬停在一个数据点上时,如何在工具提示中拥有多个数据点/标签?

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

使用GraphQL查询Uniswap的ETH价格

我的角模板订阅后不刷新'

制作钢琴模拟器,并且在控制台中不会执行或显示该脚本

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

正则表达式,允许我匹配除已定义的子字符串之外的所有内容

DOM不自动更新,尽管运行倒计时TS,JS

如何在Bootstrap中减少网格系统中单个div的宽度

如何 for each 输入动态设置输入变更值

在Odoo中如何以编程方式在POS中添加产品

如何根据输入数量正确显示alert ?

使用props 将VUE 3组件导入JS文件

当S点击按钮时,我如何才能改变它的样式?

2.0.0-dev quill拖动文本不起作用如何使其拖动文本

如何使用逗号JS从数组中输出数据列表?

无法在vue3中的img src上使用v-BIND

改进了正则表达式的性能

如何在这个bootstrap-vue表中固定显示列名的顶部标题行?