首页 > 解决方案 > 如何在嵌套数组javascript中过滤掉具有不同键的对象

问题描述

我想知道如何使用 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"}]

标签: javascripthtmlarraysobject

解决方案


因为你有函数体{},所以你需要使用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);


推荐阅读