Мне нужно создать массив всех комбинаций с значениями атрибутов.Как генерировать изменения из атрибута - значения
Атрибуты/значения объекта:
let attributes = {
color: ['red', 'green', 'blue'],
sizes: ['sm', 'md', 'lg'],
material: ['cotton', 'wool']
}
мне нужно сделать массив из всех возможных комбинаций как таковых.
color sizes material
red sm cotton
red sm wool
red md cotton
red md wool
red lg cotton
red lg wool
blue sm cotton
blue sm wool
blue md cotton
blue md wool
blue lg cotton
blue lg wool
green sm cotton
green sm wool
green md cotton
green md wool
green lg cotton
green lg wool
Количество атрибутов и количество значений как неопределенные (не менее 1). Как я могу это достичь?
Это код, который я до сих пор
// keys = ['color', 'sizes', 'material']
// attributes is the same as above.
for (let keysIndex = 0; keysIndex < keys.length; keysIndex++) {
let key = keys[i];
let values = attributes[key];
//loop through each value
for (let valuesIndex = 0; valuesIndex < values.length; valuesIndex++) {
// for each value, loop through all keys
for (let keysIndex2 = 0; keysIndex2 < keys.length; keysIndex2++) {
if (keysIndex === keysIndex2) {
continue;
}
for (let valuesIndex2 = 0; valuesIndex2 < values.length; valuesIndex2++) {
// What do I do from here?
// Not sure if this is even the right path?
}
}
}
}
Любой интересующий вас язык? – smarx
Javascript был бы хорош, однако я просто ищу алгоритм. – Jeff
Это называется * декартова произведение * (и есть множество решений JS, таких как [этот] (http://stackoverflow.com/a/15310051/1048572)) – Bergi