вернуть подмассив объекта на основе ключа объекта в массиве - PullRequest
0 голосов
/ 03 мая 2019

Учитывая эту структуру данных:

let assets = [{
  "photos": [{
    "id": 1,
    "label": "bad-syn.jpg",
    "size": 38284
  }]
}, {
  "documents": [{
    "id": 109
  }]
}]

]

Как я могу получить подмассив на основе клавиши photos?Могут быть и другие ключи.

Моя функция просто возвращает всю структуру:

findAssets: function (key) {
  return this.assets.find((asset) => {
    return asset[key]
  })
}

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Если вы хотите вернуть photos sub array или, другими словами, только значение данного key, вы просто хотите получить доступ к значению key из результата .find(), используя [key]:

findAssets =  function(key){
  return assets.find((asset) => {
    return asset[key]
  })[key]
}

Демонстрация:

let assets = [{
  "photos": [{
    "id": 1,
    "label": "bad-syn.jpg",
    "size": 38284
  }]
}]

findAssets =  function(key){
  return assets.find((asset) => {
    return asset[key]
  })[key]
}

console.log(findAssets("photos"));

Примечание:

Предполагается, что данный key существует в ваших assets объектах, в противном случае он может выдать ошибку.

0 голосов
/ 03 мая 2019

Вы хотите использовать .map(), и поскольку photos также является массивом, вам необходимо отобразить дважды.

let assets = [{
  "photos": [{
    "id": 1,
    "label": "bad-syn.jpg",
    "size": 38284
  }]
}]

function byKey(k) {
  return assets.map(a => a.photos.map(p => p[k]));
}

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