Используя следующую функцию, я ищу массив для существования значения;Сопоставьте любой элемент массива с другим массивом
var checkboxValues = ['large-car', 'small-car', 'automatic'];
var carType = ["large-car"];
function searchArray(arguments)
{
var o = {};
for(var i=0;i<arguments.length;i++)
{
o[arguments[i]]=null;
}
return o;
}
if (carType in searchArray(checkboxValues))
//do something...
Это условие хорошо работает, когда carType
(который сам является массивом) содержит только одно значение, но когда carType
содержит несколько значений, таких как,
var carType = ["large-car", "4WD"];
... то функция возвращает ложь.
Чтобы дать некоторый фон, что я пытаюсь сделать, это показать или скрыть карту маркеры (через Google Maps), основанные на определенных условиях,
- Автоматическая
- Руководство
- Маленький автомобиль
- Большой автомобиль
- 4WD
Каждый из этих Валу ues представлен как флажок. Если выбраны «Автоматический» и «Малый автомобиль», отображаются только отображаемые маркеры карт, которые содержат оба эти значения.
Если выбраны «Автоматический», «Малый автомобиль» и «Большой автомобиль», то отображаются только те значения, которые соответствуют этим выборам.
Это работает, если массив carType
содержит только одно значение, но как индивидуальное транспортное средство может иметь более одного типа, как показано выше, здесь функция не работает.
Каков наилучший способ записи функции, позволяющей сравнивать несколько значений в одном массиве с другим?
'arguments' это специальное значение в функции, вы не должны использовать его в качестве имени переменной. –
Ну, вам понадобятся две петли, вложенные друг в друга - одна, которая перебирает ваши предметы, и тот, который сравнивает текущий элемент со всеми значениями поиска. – CBroe