Добавить новый атрибут в объект JSON условно, сравнив его с другим объектом (JavaScript) - PullRequest
0 голосов
/ 09 апреля 2019

Например, у меня есть два массива "StudentInfo"

[
  {
   "id": "1234",
   "name": "A"
  },
  {
   "id": "1134",
   "name": "B"
  },
  {
   "id": "2234",
   "name": "C"
  },
  {
   "id": "3234",
   "name": "D"
  }     
]

и "GoodStudentList"

[
  "1234",
  "1134"
]

То, как я могу добавить еще один атрибут о типе Student в StudentInfo, зависит от GoodStudentList, если у них есть свой идентификатор в хорошем списке, тогда их тип хороший, в противном случае их тип - Normal:

 [
      {
       "id": "1234",
       "name": "A",
       "type": "Good"
      },
      {
       "id": "1134",
       "name": "B"
       "type": "Good"
      },
      {
       "id": "2234",
       "name": "C"
       "type": "Normal"
      },
      {
       "id": "3234",
       "name": "D",
       "type": "Normal"
      }     
]

Извините, я знаю, что это может быть легко, но я действительно не могу понять, что такое отображение в JS qwq

Ответы [ 3 ]

3 голосов
/ 09 апреля 2019

Вы можете использовать forEach() для циклического перемещения по массиву студентов и проверки наличия каждого идентификатора в списке удач с помощью includes().Затем добавьте правильное свойство в зависимости от результата при циклическом просмотре студентов:

let StudentInfo = [{"id": "1234","name": "A"},{"id": "1134","name": "B"},{"id": "2234","name": "C"},{"id": "3234","name": "D"}     ]
let GoodStudentList = ["1234","1134"]

StudentInfo.forEach(student => {
  student.type = GoodStudentList.includes(student.id) ? "Good" : "Normal"
})

console.log(StudentInfo)
1 голос
/ 09 апреля 2019

Вы можете использовать метод map в массиве StudentInfo, и для каждого элемента проверить, существует ли идентификатор этого объекта в GoodStudentList. Это может выглядеть примерно так:

StudentInfo = StudentInfo.map((student) => {
  if (GoodStudentList.indexOf(student.id) >= 0) {
   student.type = 'Good';
  } else {
    student.type = 'Normal';
  }
}) 

Здесь вы проверяете, является ли индекс идентификатора студента больше 0 для каждого студента (это означает, что он существует в массиве). Если он не существует в массиве, он вернет -1 и, следовательно, не пройдет условие. Возвращается массив StudentInfo, в котором все учащиеся изменены и теперь содержат свойство type.

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

Использование простых старых итераций:

let list = [
    {
        "id": "1234",
        "name": "A"
    },
    {
        "id": "1134",
        "name": "B"
    },
    {
        "id": "2234",
        "name": "C"
    },
    {
        "id": "3234",
        "name": "D"
    }     
];

let good = [
    "1234",
    "1134"
];

for (let key in list){
    for (let i of good){ 
       if (i === list[key].id){
           list[key].type = "Good";
           break;
       }
       else list[key].type = "Neutral";
    }
}

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