Javascript: фильтровать массив по списку номеров индексов массива - PullRequest
0 голосов
/ 08 июля 2020

У меня есть массив, содержащий следующие данные. Мне нужно отфильтровать список по номеру индекса массива.

Массив не имеет номера идентификатора массива, однако, если filterList равно [0,2], он должен захватить первый и третий элементы в массиве ниже.

Как это можно сделать?

let filterList = [0,2];

documentPropertyGridData: Array<DocumentPropertyGridData> = new Array<DocumentPropertyGridData>();

let doc1 = new DocumentPropertyGridData();
doc1.documentNumber = '2';
doc1.situsAddress = '123 Oak';

let doc2 = new DocumentPropertyGridData();
doc2.documentNumber = '7';
doc2.situsAddress = '567 3rd Avenue';

let doc3= new DocumentPropertyGridData();
doc3.documentNumber = '9';
doc3.situsAddress = '895 Washington St';

let doc4= new DocumentPropertyGridData();
doc4.documentNumber = '3';
doc34.situsAddress = '894 Forest Road';

this.documentPropertyGridData.push(doc1);
this.documentPropertyGridData.push(doc2);
this.documentPropertyGridData.push(doc3);
this.documentPropertyGridData.push(doc4);

В настоящее время используется Typescript в среде Angular, однако код JavaScript будет работать.

Ответы [ 2 ]

1 голос
/ 08 июля 2020

Вы можете map на filterList, чтобы получить документы по index:

var filterList = [0, 2];
var doc = [

  {
    documentNumber: '2',
    situsAddress: "123 Oak"
  },
  {
    documentNumber: '7',
    situsAddress: "567 3rd Avenue"
  },
  {
    documentNumber: '9',
    situsAddress: "895 Washington St"
  },
  {
    documentNumber: '3',
    situsAddress: "894 Forest Road"
  }
]

console.log(filterList.map(index => doc[index]))
1 голос
/ 08 июля 2020

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

var arr = [

    {
    documentNumber: '2',
    situsAddress:"123 Oak"
},
  {
    documentNumber: '7',
    situsAddress:"567 3rd Avenue"
},
  {
    documentNumber: '9',
    situsAddress:"895 Washington St"
},
  {
    documentNumber: '3',
    situsAddress:"894 Forest Road"
}
]

var filterList = [0,2];

var result = arr.filter((obj,index) => filterList.includes(index));
console.log(result)

OR 

filterList.map((item) => arr[item]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...