Окончательное решение, вернулся к циклу, но уже foreach
function init() {
// Создаем карту
var myMap = new ymaps.Map('map', {
center: [59.892450, 30.357102],
zoom: 10
});
//Задаем список адресов
var adr = ['Спб, ударников 1', 'Спб, ударников 20', 'Спб, оптиков 1', 'Спб, оптиков 20', 'питер, ленина 1'
,'Спб, труда 2','Спб, бухарестская 1','Спб, невский 100','Спб, магнитогорская 51','Спб, большевиков 2','Спб, дыбенко 2'
,'Спб, гагарина 2','Спб, софийская 2','Спб, труда 2','Спб, пионерская 2','Спб, ленинский проспект 2','Спб, стачек 2'
,'Спб, правды 2','Спб, декабристов 2','Спб, швецова 2','Спб, чехова 2','Спб, Беринга 2','Спб, одоевского 2',
'Спб, шаврова 2','Спб, руднева 2','Спб, антоновская 2'];
var comb = [];
for (var i = 0; i < adr.length; i++) {
for (var j = 0; j < i; j++) {
comb.push(i + '-' + j);
}
}
console.log("количество комбинаций " + comb.length);
//Для каждой комбинации выстраеваем маршрут на карте и пытаемся узнать длину маршрута
var arrayWays = comb.forEach(function(way, index, array) {
var pos, first, second;
pos = way.indexOf('-');
first = way.substring(0, pos);
second = way.substring(pos + 1, array.length);
ymaps.route([adr[first], adr[second]]).then(
function(route) {
myMap.geoObjects.add(route);
console.log(route.getHumanLength(), comb[index], index);
},
function(error) {
alert('Невозможно построить маршрут');
}
);
});
}
ymaps.ready(init);