Как отфильтровать и добавить оставшийся объект в JavaScript - PullRequest
1 голос
/ 05 апреля 2019

Я хотел бы знать, как изменить конкретный объект в Javascript,

Я могу получить объект на основе фильтра, но как добавить `` `'в' = 'bank' и 'out'= «банк» нефильтрованного идентификатора до конца отфильтрованного объекта

'bank' должен быть по умолчанию, если in и out равно 'bank', in равно 'credit' и out равно'bank' и id - это 'trans', затем отфильтруйте 'trans' и добавьте остальные in, out, bank и ids, как показано.

function getValue(send,receive, id){
 const temp = obj.map(e => Object.entries(e).map(([k, val]) => val)).flat(3)
    this.selectedProviderList = temp.filter(x=>x.in== send && x.in ==receive && x.id==id);
}

getValue("credit", "bank", "trans");
var obj = [{
    "btob": [{
      "id": "trans",
      "in": "bank",
      "out": "bank",
      "value": 10
    },{
      "id": "fund",
      "in": "bank",
      "out": "bank",
      "value": 10
    }],
    "ctob": [{
      "id": "trans",
      "in": "credit",
      "out": "bank",
      "value": 20
    },{
      "id": "fund",
      "in": "credit",
      "out": "bank",
      "value": 10
    }]
}]

Например, получить значения, если in равно 'credit' и out равно 'bank', а id равно 'trans'.

// Expected Output
[
   {
      "id": "trans",
      "in": "credit",
      "out": "bank",
      "value": 20
    },
    {
      "id": "fund",
      "in": "bank",
      "out": "bank",
      "value": 10
    }
]

// get the values if 'in' is 'debit' and 'out' is 'bank' and id is "fund" 

[{
      "id": "trans",
      "in": "bank",
      "out": "bank",
      "value": 10
    },{
      "id": "fund",
      "in": "debit",
      "out": "bank",
      "value": 10
    }]

// get the values if 'in' is 'bank' and 'out' is bank and id is "trans"

  [{
      "id": "trans",
      "in": "bank",
      "out": "bank",
      "value": 10
    },{
      "id": "fund",
      "in": "bank",
      "out": "bank",
      "value": 10
    }]

Ответы [ 2 ]

3 голосов
/ 05 апреля 2019

если вы можете конвертировать ваш объект, тогда один шаговый фильтр может сделать это

var obj = [
        {
          "id": "trans",
          "in": "bank",
          "out": "bank",
          "value": 10
        },
        {
          "id": "fund",
          "in": "bank",
          "out": "bank",
          "value": 10
        },
       {
          "id": "trans",
          "in": "credit",
          "out": "bank",
          "value": 20
        },
        {
          "id": "fund",
          "in": "credit",
          "out": "bank",
          "value": 10
        }
    ]
// get the values if in is 'credit' and out is 'bank' and  id is 'trans'
 let resOne=obj.filter((givenObj)=>{
if(givenObj.in=="credit"&&givenObj.out=="bank"&&givenObj.id == "trans"){
  return givenObj
}
 })
  console.log(resOne)
 
 
 //// get the values if 'in' is 'debit' and 'out' is 'bank' and id is "fund" 
  let resTwo=obj.filter((givenObj)=>{
if(givenObj.in=="debit"&&givenObj.out=="bank"&&givenObj.id == "fund"){
  return givenObj
}
 })
   console.log(resTwo)
   
   
   //// get the values if 'in' is 'bank' and 'out' is bank and id is "trans"
    let resThree=obj.filter((givenObj)=>{
if(givenObj.in=="bank"&&givenObj.out=="bank"&&givenObj.id == "trans"){
  return givenObj
}
 })
   console.log(resThree)
   
0 голосов
/ 05 апреля 2019

Ошибка TYpo x.id == id вместо x.id = id и получение в параметре, но в фильтре - получение

 function getValue(send,recieve, id){
  const temp = obj.map(e => Object.entries(e).map(([k, val]) => val)).flat(3)
   this.selectedProviderList = temp.filter(x=>x.in== send && x.in == recieve && 
   x.id==id);
 }

getValue("credit", "bank", "trans");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...