Горячий, чтобы обновить конкретный объект в JavaScript - PullRequest
0 голосов
/ 05 апреля 2019

Как обновить конкретный объект на основе условия в JavaScript

У меня есть объект с именем obj на основе условия:

'in'=="credit" и 'out'=="bank" и "id"=="trans", получитьобъект и добавить по умолчанию как 'in'=="bank" и 'out'=="bank" и "id"=="fund.

'in'=="debit" и 'out'=="bank" и "id"=="fund", получить объект и добавить значение по умолчанию как 'in'=="bank" и 'out'=="bank" и"id"=="trans".

Я пробовал фильтр, но застрял

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
    }],
 "dtob": [{
      "id": "trans",
      "in": "debit",
      "out": "bank",
      "value": 20
    },{
      "id": "fund",
      "in": "debit",
      "out": "bank",
      "value": 10
    }]
}]
// get the values if 'in' is 'credit' and 'out' is 'bank' and id is "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": "fund",
      "in": "debit",
      "out": "bank",
      "value": 10
    },{
      "id": "trans",
      "in": "bank",
      "out": "bank",
      "value": 10
    }]

1 Ответ

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

Поскольку in является зарезервированным ключевым словом в JavaScript, вам необходимо использовать нотацию [] (квадратная скобка). (Я также изменил второй in на out).

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

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