【问题标题】:how to filter out object having different keys in nested array javascript [duplicate]如何过滤掉嵌套数组javascript中具有不同键的对象[重复]
【发布时间】:2019-05-24 08:34:51
【问题描述】:

我想知道如何使用 javascript 过滤掉嵌套数组中的对象。 我有 obj sample_obj 其中有不同的键,我想在 javascript 中使用 payin=="bank" && payout=="bank" 进行过滤。

   var result= sample_obj.filter((e)=>{
      e.payin=="bank" && e.payout=="bank"
    })
console.log("Result:", result);
//inputs
var sample_obj = [{
  obj1: [{
    id: "IN",
    amount: 100,
    payin: "bank",
    payout: "bank"
  },{
    id: "IN",
    amount: 200,
    payin: "credit",
    payout: "bank"
  }],
  obj2: [{
    id: "TR",
    amount: 120,
    payin: "bank",
    payout: "bank"
  },{
    id: "TR",
    amount: 250,
    payin: "debit",
    payout: "bank"
  }]
}]

 Output:
  Result:[{
    id: "IN",
    amount: 100,
    payin: "bank",
    payout: "bank"
 },    {id: "TR",
    amount: 120,
    payin: "bank",
    payout: "bank"}]

【问题讨论】:

  • 您需要在过滤器 return e.payin=="bank" && e.payout=="bank"return 或删除 {} 包装器以进行隐式返回
  • @adiga 感谢您的回复,它不起作用,但我的问题是因为我有两个不同的键,obj1obj2sample_obj 内,如何使用过滤器
  • 我投票决定重新提出这个问题,因为return 不是您问题的唯一问题。您在对象中有一个嵌套数组。您需要遍历每个属性并进行过滤

标签: javascript html arrays object


【解决方案1】:

因为你有函数体{},所以你需要使用return。由于您的数据结构,您还需要更改一些内容:

 

var sample_obj = [{
  obj1: [{
id: "IN",
amount: 100,
payin: "bank",
payout: "bank"
  },{
id: "IN",
amount: 200,
payin: "credit",
payout: "bank"
  }],
  obj2: [{
id: "TR",
amount: 120,
payin: "bank",
payout: "bank"
  },{
id: "TR",
amount: 250,
payin: "debit",
payout: "bank"
  }]
}]

var result= Object.values(sample_obj[0]).
reduce((acc, curr) => acc.concat(curr)).filter((e)=>{
  return e.payin=="bank" && e.payout=="bank"
});
console.log("Result:", result);

【讨论】:

  • 感谢您的解决方案,是否也可以使用过滤器?
  • 确实使用过滤器...
猜你喜欢
  • 2021-10-21
  • 2021-08-01
  • 1970-01-01
  • 2020-06-30
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-16
相关资源
最近更新 更多