使用另一个数组过滤 JavaScript 对象数组


假设我们有一个这样的对象数组 −

const arr = [
   {area: 'NY', name: 'Bla', ads: true},
   {area: 'DF', name: 'SFS', ads: false},
   {area: 'TT', name: 'SDSD', ads: true},
   {area: 'SD', name: 'Engine', ads: false},
   {area: 'NSK', name: 'Toyota', ads: false},
];

我们需要编写一个 JavaScript 函数,该函数将一个这样的数组作为第一个参数,并将一个字符串文字数组作为第二个参数。

然后,我们的函数应该过滤输入对象数组,只包含那些“area”属性包含在文字数组(第二个参数)中的对象。

示例

代码为 −

const arr = [
   {area: 'NY', name: 'Bla', ads: true},
   {area: 'DF', name: 'SFS', ads: false},
   {area: 'TT', name: 'SDSD', ads: true},
   {area: 'SD', name: 'Engine', ads: false},
   {area: 'NSK', name: 'Toyota', ads: false},
];
const keys = ['NY', 'SD'];
const filterByArea = (arr = [], keys = []) => {
   const res = [];
   for(let i = 0; i < arr.length; i++){
      const { area } = arr[i];
      if(keys.includes(area)){
         res.push(arr[i]);
      };
   };
   return res;
};
console.log(filterByArea(arr, keys));

输出

而控制台中的输出为 −

[
   { area: 'NY', name: 'Bla', ads: true },
   { area: 'SD', name: 'Engine', ads: false }
]

更新日期:23-11-2020

511 次浏览

开启你的 职业生涯

完成课程获得认证

开始
广告