как l oop ответ и объединить массив, если существует второй массив с использованием es6 - PullRequest
0 голосов
/ 08 марта 2020
[
  {
    "details": {
      "name": "john",
      "point": "20"
    },

    "list": {
      "number": "30",

    }
  },
  {
    "details": {
      "name": "doe",
      "point": "25"
    },
    "list": {
      "number": "30",

    }
  }
]

Я получаю ответ из магазина в вышеуказанном формате. Я использую селектор, чтобы получить ответ, я хотел бы объединить второй массив, если он существует, и отобразить в следующем формате

{
  "details": [
    {
      "name": "john",
      "point": "20"
    },
    {
      "name": "doe",
      "point": "25"
    }
  ]
}

это то, что я пытаюсь сделать, пожалуйста, предложите спасибо заранее

this.store.pipe(
        select(someselector), 
        filter(result => !!result), 
        map(r => { 
             if (result) { 
              //concat the array if exist;
              return result;
             } 
           }
        ));

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Создайте его с помощью оператора rest и верните данные в требуемом формате.

if (result) {
  // concat if arr exist. let say array name is arr.
  result = {
    details: [...result, ...arr].map(d => {
      return {
        name: d.details.name,
        point: d.details.point,
      }
    })
  }
  return result;
}
0 голосов
/ 08 марта 2020

это очень просто. Предположим, ваш первый массив

let arry1 = [{"details":{"name":"john","point":"20"},"list":{"number":"30",}},{"details":{"name":"doe","point":"25"},"list":{"number":"30",}}];

второй массив

let newarr = [];

теперь pu sh детали от первого массива до второго,

newarr.push(arrlist.map(ob=>{return ob.details}));

тогда newarr содержит

[[{"name":"john","point":"20"},{"name":"doe","point":"25"}]]

Надеюсь, это полезно для вас

Счастливое кодирование

...