【问题标题】:filter an array of objects based on matching key/value property? [duplicate]根据匹配的键/值属性过滤对象数组? [复制]
【发布时间】:2018-05-30 17:25:35
【问题描述】:

这是我试图解决的问题。我知道如何与对象进行直接比较,但我发现了如何在过滤器 fx 中进行两者或属性比较。

// tasks are objs with {name: string,id: int}

const taskArray = [task1, task2, task3, task3];

// f(x) needs to take obj param and see if it matches either/or with 
// any task obj k/v pair
// my implementation so far, missing something important, help here


const filterTasks = (taskArray, obj) => {
  taskArray.filter( task => Object.keys(task)  // i know I have to do some equality opperator here but stuck

  return taskArray;
}

【问题讨论】:

  • 您能否提供更多关于您的过滤条件的信息?
  • 是的,我想根据 taskArr 过滤一些匹配项,并将其与传入的 obj 的一些键或值匹配
  • 这不是抄袭!
  • 所以,无论是同名还是同一个id,或者两者都匹配,对吧?
  • ys Attersson 我知道如何匹配基本 obj

标签: javascript


【解决方案1】:

就是这样。 filterTasks 将返回一个数组,该数组仅包含传递的数组中与传递的对象中至少有 1 个 key/val 对匹配的任务。

tArr = [{name: "hi",id: 1},{name: "hola",id: 2},{name: "hello",id: 3},{name: "bye",id: 4}];

const filterTasks = (taskArray, obj) => taskArray.filter( task => Object.keys(task).some( key => obj[key] && obj[key]==task[key]));

console.log(filterTasks(tArr,{name:"hi",id:2}));

【讨论】:

  • 我总是忘记 some() 方法谢谢
  • 那只是我的浏览器崩溃了抱歉
  • 不客气
  • 如果没有版主在这个网站上对我投反对票,我似乎连一个合法的问题都问不出来。我很高兴至少你给了我一个机会
猜你喜欢
  • 2020-09-03
  • 2017-03-19
  • 2016-05-15
  • 2018-11-03
  • 2018-12-25
  • 2018-07-06
  • 2016-05-12
  • 2015-05-30
  • 2018-05-25
相关资源
最近更新 更多