2015-05-30 7 views
5

У меня есть бизнес-сценарий, как показано ниже.Проверка пар ключей в Javascript

Я добавляю строки возможных (ключ, значение). (Страна, климат), как показано ниже.

В изображении 2 дается весь сценарий «Действительный и недействительный» («Ключ», «Значение»).


Возможные ключи - Все страны, Индия, Австралия, Америка, Англия

Возможные значения - Все климат, горячие, сухие, дождливые, холодные, Влажный


Пример

if (All Country, All Climate) выбран в качестве первой пары (Англия, горячая) shoul не d разрешено быть выбрана в качестве второй пары

Если (Все страны, горячие) выбрана в качестве первой пары (Индии, горячий), не должен быть позволен bechosen в качестве второй пары

Если (Америка, Всего Климат) выбран в качестве первой пары (Америка, Hot) не должно быть позволено быть выбран в качестве второй пары

где, как

Если (Индия, горячий) выбран в качестве первой пары (Индия, влажно) допускается выбранный как вторая пара

If (America, All Cl imate) выбрана в качестве первой пары (Англия, весь климат), допускается выбирать в качестве второй пары

Если (Америка, все климат) выбрана в качестве первой пары (Индия, влажный), то ей разрешается выбирать вторую пара

изображение 1

Image1


изображение 2

Image2

Вопрос Я объяснил мой Коллега все допустимые и недопустимые возможные комбинации через IMAGE2.

В javascript самым простым решением было бы добавить утверждения if else и сделать это. При этом разрыв между тем, который я объяснял для решения бизнес-сценария в документе и расширении кода, расширяется.

Какова была бы наилучшая реализация переноса матрицы в документе в код, чтобы бизнес в документе и коде был тесно связан.

Этот вопрос может показаться неясным, но мы все как минимум однажды столкнулись с такой проблемой, когда вещи, написанные для решения проблемы в бумаге и способы ее решения по коду, не имеют смысла.

ответ

1

Использовать двоичную арифметику.

Страна значения

India  0001 
Australia 0010 
America  0100 
England  1000 
All Country 1111 

климата Значение

Hot   00001 
Dry   00010 
Rainy  00100 
Cold  01000 
Humid  10000 
All Climate 11111 

При выборе второго пункта, используйте AND операцию, чтобы решить, если это значение уже выбран, (ALL или же значение).

пример

var firstCountry = 0xF 
var secondCountry = 0x1 
if ((firstCountry & secondCountry) > 0) 
{ 
    console.log("country is already choosen"); 
} 

Конечно, этот пример только для одного атрибута. Вы должны обновить его для обоих атрибутов.

+0

Возможно, вы имели в виду значение 'Humid', чтобы быть' 10000'? –

+0

@AJRichardson да, извините, каждый атрибут должен быть разным, и ВСЕ должны их суммировать. –

Смежные вопросы