При прохождении через Javascript объект и проверка свойства имеют дочерний элемент с данными - PullRequest
0 голосов
/ 05 августа 2020

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

Например, если пользователь является членом списка с идентификатором 2022, затем отобразить имя пользователя (также из объекта).

Что я пробовал:

    var data = {
  "id": 12345,
  "is-contact": true,

  "firstname": {
    value: "Freddy"
  },
  "list-memberships": [
    {
      "list-id": 2022,
        "is-member": true
    },
    {
      "list-id": 5033,
      "is-member": true
    }
  ]

}

    var list_memberships = "list-memberships";
    var list_id = "list_id";

    // is member a list of this list
    var check_against_list = 2022;

    // trying to get first name
    console.log(data.firstname.value); // logs undefined (Cannot read property 'value' of undefined)

    // trying to check through each list-membership item to see if a list with the id of check_against_list (2022) exists
    var child = _.filter(data.list_memberships, obj => data.list_memberships.list_id === check_against_list);

Я адаптировал следующее, используя этот вопрос здесь

1 Ответ

1 голос
/ 05 августа 2020

У вас проблемы с массивом: запятые и - символы в именах переменных, что неправильно. Взгляните на этот код

var data = {
  id: 12345,
  iscontact: true,

  firstname: {
    value: "Freddy"
  },

  listmemberships: [
    {
      listid: 2022,
      ismember: true
    },
    {
      listid: 5033,
      ismember: true
    },
  ]
};

// is member a list of this list
var check_against_list = 2022;

// trying to get first name
console.log(data.firstname.value);

// trying to check through each list-membership item to see if a list with the id of check_against_list (2022) exists
var child = data.listmemberships.filter(obj => obj.listid === check_against_list);

// List exist, if this array > 0
if(child.length > 0) {
  console.log("Exist!");
  console.log(child);
}
...