У меня есть массив ints, который называется SelectedItems
. У меня есть другой массив, содержащий объекты, которые называются AvailableItems
, и это было проанализировано с помощью json; эти объекты Item
имеют свойства {ContainerID, ContainerName, ItemID, ItemName}
.javascript преобразование массива из ints в массив объектов
Я хочу, чтобы преобразовать SelectedItems
из массива целых чисел в массив Items
, где каждый ItemID
заменяется на Item
объекте, который соответствует ItemID
в AvailableItems
. Каждый ItemID
в SelectedItems
уникален.
Я начал с 2-мя петлями: одно петлями через каждый элемент SelectedItems
но тогда я окажусь пробегаем по AvailableItems
каждый раз, чтобы найти соответствующий ItemID
с ключами объекта мне нужно скопировать в SelectedItems
.
Итак, в основном я построил, казалось бы, очень неэффективный цикл. Мне было интересно, есть ли лучший способ сделать это, избегая повторного цикла внутри цикла?
Образец данных:
Для AvailableItems
, у вас есть
{
ContainerID: i,
ContainerName: 'SomeName',
ItemID: j,
ItemName: 'SomeOtherName'
}
с может быть 1000 объектов, а затем SelectedItems
является массив Интс
[23,43,64,34...]
Спасибо.
Вы можете отфильтровать второй массив в соответствии с первым, а затем вернуть результат с такими функциями, как Array.filter, вы можете проверить, содержится ли элемент в первом с Array.indexOf, который должен быть> -1 каждый раз, когда условие истинно. – mpm
@camus: хорошо, ваш комментарий дал идею о том, как его переделать лучше. Я копирую массив AvailableItems с помощью jquery.extend в новый массив с именем CandidateItems, а затем прохожу через этот массив: я проверяю, есть ли ItemID каждого элемента в SelectedItems с $ .InArray, и если я не удаляю этот элемент. В конце цикла я назначаю CandidateArray для SelectedItems и voila – frenchie