отфильтровать массив объектов по свойству и получить связанный с ним storeID - PullRequest
0 голосов
/ 27 мая 2020

Я новичок в stackoverflow. Так что извините, если я неправильно сформулировал свой вопрос.

У меня есть особое требование c для фильтрации массива и получения из него сведений о свойствах при совпадении критериев поиска. Вот мое требование.

let userEntered = "Zone 1"

let givenArray = 
[0]: { zone: 'Zone 1', storeId: '3405'}
[1]: { zone: 'Zone 2', storeId: '3455'}
[2]: { zone: 'Zone 2', storeId: '4125'}
[3]: { zone: 'Zone 1', storeId: '5677'}
[4]: { zone: 'Zone 2', storeId: '1123'}
[5]: { zone: 'Zone 3', storeId: '9845'}
[6]: { zone: 'Zone 1', storeId: '2341'}

Когда пользователь вводит Zone 1, мы должны искать givenArray и отфильтровывать те, которые имеют zone='Zone 1'.

Как только это будет сделано, мне нужно связать с ним storeId. Итак, согласно приведенному выше сценарию, storeIds, связанные с Zone 1, равны '3405', '5677', '2341'

Таким образом, мой окончательный результат должен быть '3405', '5677', '2341'. (В виде строки storeID, разделенных ,)

Кто-нибудь, пожалуйста, дайте мне знать, как этого добиться. Я могу использовать обычный метод фильтрации для получения массивов с zone=="Zone1". но я не могу получить от него storeIds и сохранить его как строку в моем выводе. Может ли кто-нибудь помочь / предложить способ сделать это.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

С помощью операторов filter , map и join .

const userEntered = "Zone 1";

const givenArray = [
  { zone: 'Zone 1', storeId: '3405'},
  { zone: 'Zone 2', storeId: '3455'},
  { zone: 'Zone 2', storeId: '4125'},
  { zone: 'Zone 1', storeId: '5677'},
  { zone: 'Zone 2', storeId: '1123'},
  { zone: 'Zone 3', storeId: '9845'},
  { zone: 'Zone 1', storeId: '2341'},
];

const result = givenArray
  .filter(item => item.zone === userEntered)
  .map(item => item.storeId)
  .join(', ');
  
console.log(result);
0 голосов
/ 27 мая 2020

var arr = [{ zone: 'Zone 1', storeId: '3405'}
,{ zone: 'Zone 2', storeId: '3455'}
,{ zone: 'Zone 2', storeId: '4125'}
,{ zone: 'Zone 1', storeId: '5677'}
,{ zone: 'Zone 2', storeId: '1123'}
,{ zone: 'Zone 3', storeId: '9845'}
,{ zone: 'Zone 1', storeId: '2341'}]

var result = arr.filter(item => item.zone === "Zone 1").forEach(x=>console.log(x.storeId));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...