Как найти индекс объекта в массиве, используя несколько значений с ES5? - PullRequest
0 голосов
/ 15 января 2019

В настоящее время я ищу объекты в массиве, используя одно значение - номер элемента. Тем не менее, если случается, что несколько заказов имеют одинаковый номер элемента, как можно найти индекс конкретного объекта, используя оба значения?

Объект структурирован таким образом:

var object = {
    line: line,
    poNumber: purchaseOrder,
    item: item
};

Вот как я сейчас смотрю на объекты:

var posArrInd = posArr.map(function (x) { return x.item; }).indexOf(String(item));
var po = posArr[posArrInd];
var poLine = po.line;

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Похоже, вы могли бы просто использовать filter, если я правильно читаю ваш вопрос. Например:

 var theItem = 'however your item numbers look'
 var matches = posArr.filter(function(x) { return x.item === theItem })

Это вернет массив всех вещей в posArr, у которых есть определенный номер элемента, указанный в theItem

0 голосов
/ 15 января 2019

ES6 +

Вы можете использовать .findIndex ()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex

var found = items.findIndex(function(itm) {
   return itm.number1 === number1 && itm.number2 === number2;
});

ES5:

Использование .filter ():

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

var foundItems = items.filter(function(itm) {
   return itm.number1 === number1 && itm.number2 === number2;
});

if (foundItems && foundItems.length > 0) {
 var itemYouWant = foundItems[0];
}

Получение индекса - вы можете получить значение индекса, возвращенное как часть метода фильтра. Проверьте документы для большего количества примеров.

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