Вернуть ВСЕ массив пересечений JavaScript

Мой текущий код:

    function intersect(first, second) {
    var temp = [];
    for(var i = 0; i < first.length; i++){
        for(var k = 0; k < second.length; k++){
            if(first[i] == second[k]){
                temp.push( first[i]);
                break;
            }
        }
    }

  return temp;
}

Как я могу изменить это так, чтобы он возвращал ВСЕ индексы пересечений?

2 ответа

Решение

Вам нужно добавить индексы к вашему результату;

function intersect(first, second) {
  var temp = [];
  for(var i = 0; i < first.length; i++){
    for(var k = 0; k < second.length; k++){
      if(first[i] == second[k]){
        temp.push([i, k]); // push i and k as an array
      }
    }
  }

  return temp;
}

Также удалите break; если вы хотите, чтобы также были выбраны повторяющиеся точные пересечения.

Найдите работающий пример здесь: http://jsfiddle.net/0tL9sk5w/1

Все, что вам нужно сделать, это нажать два индекса в виде массива

вместо:

temp.push( first[i]);

вам нужно сделать это:

temp.push([i,k]);
Другие вопросы по тегам