Как переместить ключевое значение c в другой объект массива в javascript - PullRequest
0 голосов
/ 18 июня 2020

У меня есть объект массива obj как переместить конкретное значение ключа store внутри другого массива items в javascript. Я хотел бы знать, как передать конкретное значение ключа внутри другого массива в javascript

var obj = [
  {
   id:1,
   store: "10",
   items: [{name:"sample1", total: 20}, {name:"sample2", total: 10}] // add store
  },
  {
   id:1,
   store: "11",
   items: [{name:"sample3", total: 10}, {name:"sample4", total: 10}] // add store
  }
]

function newarray(obj){
 return obj.map(e=>...e,e.items.map(i=>{...i,store: e.store })
}

Ожидаемый результат

[
  {
   id:1,
   store: "10",
   items: [{name:"sample1", total: 20, store: "10"}, {name:"sample2", total: 10, store: "10"}]
  },
  {
   id:1,
   store: "11",
   items: [{name:"sample3", total: 10, store: "11"}, {name:"sample4", total: 10, store: "11"}] 
  }
]

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Вы можете использовать reduce и forech, если хотите попробовать другой подход

var obj = [
  {
   id:1,
   store: "10",
   items: [{name:"sample1", total: 20}, {name:"sample2", total: 10}] 
  },
  {
   id:1,
   store: "11",
   items: [{name:"sample3", total: 10}, {name:"sample4", total: 10}] 
  }
]
newob=obj.reduce((acc,curr)=>{
  curr.items.forEach(x=>{
   x.store=curr.store
  })
   return [...acc,{...curr}]
},[])
console.log(newob)
0 голосов
/ 18 июня 2020

Вы почти в правильном направлении, нужно внести лишь несколько изменений в вашу map функцию, чтобы получить ожидаемый результат:

var obj = [ { id:1, store: "10", items: [{name:"sample1", total: 20}, {name:"sample2", total: 10}] }, { id:1, store: "11", items: [{name:"sample3", total: 10}, {name:"sample4", total: 10}] }];

var result = obj.map(val=>(val.items = val.items.map(p=>({...p,store:val.store})), val));

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...