Найти и заменить объект вложенного массива в JavaScript - PullRequest
0 голосов
/ 08 апреля 2019

Как найти и заменить более глубоко вложенный объект массива в JavaScript

У меня есть пример имени объекта obj и отфильтрован объект по id, in , and out (obj_res). Как найти и обновить конкретный объект с id fund в obj_res в javascript, как показано в ожидаемом выводе

Я застрял нужна помощь, как это сделать в JavaScript

var obj_res = getValue("bank", "bank", "trans");
function getValue(send, receive, id){
   const temp = obj.map(e => Object.entries(e).map(([k, val]) => val)).flat(3)
    result_obj = temp.filter(x=>x.in ==send && && x=>x.out ==receive && x.id == id);
  return result_obj;}
//whole object input
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
    }]
}]
//resultant obj after filter by id , in ,out 
var obj_res =[{
  "id": "trans",
  "in": "bank",
  "out": "bank",
  "value": 10
 },{
 "id": "fund",
 "in": "bank",
 "out": "bank",
 "value": 10
}]

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

1 Ответ

0 голосов
/ 08 апреля 2019

Используйте find(), чтобы получить первый экземпляр, если вы думаете, что есть только один. В противном случае используйте filter() и зацикливайте каждый из них для изменения свойств каждого соответствующего объекта

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


var fund = obj_res.find(({id}) => id === 'fund'); // returns array element or false

if (fund) {
  fund.in = 'XXXXX';
  console.log(obj_res)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...