#javascript #arrays #reactjs #lodash
#javascript #массивы #reactjs #Lodash
Вопрос:
У меня есть такой массив.
const test = [
{ student: { id : '1', Name: 'A' }, marks: {
id: '2', Name: 'B'
} },
{ student: {
id : '3', Name: 'C' }, marks: { id: '4', Name: 'D' } }
]
Теперь, из этого массива объектов, я пытаюсь создать два разных массива, которые будут иметь отдельные ключи student и marks .
const student = [{"student":{"Id": {value: "A"}}}, {"student":{"Id": {value: "B"}}}]
и для меток
const marks = [{"marks":{"Id": {value: "C"}}}, {"marks":{"Id": {value: "D"}}}]
Итак, вот что я попробовал
test.map((index,item) => {
return [item.student]
})
может ли кто-нибудь помочь мне с этим?
Спасибо.
Комментарии:
1. В общем, это «плохая практика» (особенно при работе с базами данных, такими как MongoDB), чтобы начинать изменять структуру данных и имена вложенности свойств (
id
наId
) без большого значения или семантики. В вашем случае перед изменениемconsole.log(test[0].student.id)
(возврат1
). Послеconsole.log(student[0].student.Id.value)
(ВернутьA
, а не1
).
Ответ №1:
Вы хотите, чтобы возвращался новый объект, а не вложенный массив.
Далее используется деструктурирование для упрощения возвращаемого объекта
const test = [
{ student: { id : '1', Name: 'A' }, marks: {
id: '2', Name: 'B'
} },
{ student: {
id : '3', Name: 'C' }, marks: { id: '4', Name: 'D' } }
]
const students = test.map(({student}) => ({student}))
const marks = test.map(({marks}) => ({marks}))
console.log(students)
console.log(marks)
Комментарии:
1. да, это будет работать, но я также должен добавить новое свойство, в котором будет значение, а не идентификатор и имя.
2. а также как мне вернуть оба новых объекта из одной и той же функции map.
3. просто чтобы упростить мой ответ в комментарии, используйте другую карту(). Или создайте два массива, которые затем используйте
forEach()
, и поместите каждый объект в связанный массив4. Что касается других свойств
...map(({student}) => ({student, someProperty: someValue}));
5. Таким образом, это удалит существующие значения и добавит новое свойство правильно