2016-04-21 2 views
2

У меня есть четыре массива, как этотфункция сопряжения Odrered в JavaScript

var Broker = ['A', 'B', 'C']; 
var Currency = ['C', 'D', 'E']; 
var Time = ['F', 'G', 'H', 'I']; 
var Mode = ['J', 'K', 'L']; 

так все тезисы массивы показаны в множественном выборе separtely.so, когда пользователь выбирает несколько поля из каждого множественного выбора выпадающего списка я хотел бы перечислить все возможности парирования с выбранными объектами пример if user choose A and B from Broker, C from currency, F,G from time and J from mode the paring possiblity should be stored in another separate array like this var paired = [{borker:A,currency:C,time:F, mode: J},{borker:A,currency:C,time:G, mode: J},{borker:A,currency:C,time:F, mode: J}, {borker:B,currency:C,time:F, mode: J},{borker:B,currency:C,time:G, mode: K},{borker:B,currency:C,time:F, mode: L}]; Я могу пропустить элементы в пропущенном массиве, но мне нужно, по крайней мере, один уникальный элемент из всех выбранных массивов. Это набор. Вы можете, ребята, как я могу получить такой результат.

+0

'{borker: А, валюта: С, время: F, режим: J}' дублируется, '{borker: В, валюта: С, время: F, режим: L}' не был выбран , Кроме того, он просто порождает перестановки. – zerkms

+0

да так как я могу сделать такие перестановки в javascript @zerkms –

+0

У вас есть ключевое слово сейчас, вы пытались сделать * любые исследования? – zerkms

ответ

2

Этот код создает массив с именем permutations, который содержит объект для каждой возможной перестановки вариантов. Вложенные for-loops - это трюк для перестановок.

var Broker = ['A', 'B', 'C']; 
var Currency = ['C', 'D', 'E']; 
var Time = ['F', 'G', 'H', 'I']; 
var Mode = ['J', 'K', 'L']; 
var permutations = []; 
for(var i = 0; i < Broker.length; i++) { 
    for(var j = 0; j < Currency.length; j++) { 
     for(var k = 0; k < Time.length; k++) { 
      for(var l = 0; l < Mode.length; l++) { 
       permutations.push({ 
         borker:Broker[i], 
         currency:Currency[j], 
         time:Time[k], 
         mode:Mode[l] 
       }); 
      } 
     } 
    } 
} 
+0

Ну, с несколькими брокерами и несколькими валютами и другими вариантами он может работать нормально, но что произойдет, если будут тысячи брокеров и все доступные валюты, а также множество других вариантов? – Rolice

+0

@Rolice: перестановки экспоненциально увеличиваются, но это все еще выглядит наиболее эффективным методом итерации для определения перестановок. Я бы определенно поставил под вопрос вычисление перестановок, если бы было так много вариантов, но это, кажется, отвечает на вопрос. – lyjackal

+0

@lyjackal, я думаю, что ответ основан на комментарии члена, ниже вопроса. Это математически правильно, и таким образом все перестановки будут покрыты. Но в случае с пользователем, я думаю, ему может понадобиться довольно простое сопоставление (даже с данными статического отображения). – Rolice

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