Мне нужно сравнить несколько массивов и вывести различия в JavaScript. Это вложенный массив любой возможной длины

Это то, что у меня есть, в настоящее время я могу понять разницу. Но, как вы увидите из массивов, которые я сравниваю, я хочу вернуть 2 значения. То есть, если я сравниваю Первый массив в a1 с первым массивом в a2, я должен получить разницу, аналогично, если я сравниваю Второй массив в a1 со вторым в a2, я должен получить разницу, которая равна 4. Прямо сейчас Я получаю только одно значение обратно.

var findDivergence = function (a1, a2) {

  for (let q = 0; q < a1.length; q++) {
    var result = [];
    for (i = 0; i < a1[q].length; i++) {
      if (a1[q][i] !== a2[q][i]) {
        result.push(i);
        console.info(result.length)
      }
    }
  }
  return `Length is : ${result.length}`;

};

console.info(findDivergence([
    ["a", "b", "c", "d", "e", "f", "g"], 
    ["a", "b", "c", "d", "e", "f", "g"]
  ], 
  [
    ["a", "b", "d", "r", "e", "q", "g"], 
    ["a", "2", "d", "r", "e", "q", "g"]
  ]
));

пожалуйста, добавьте результат.

Nina Scholz 15.03.2019 23:50
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
42
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Так?

var zip = function(a1, a2) {
  const len = a1.length < a2.length ? a2.length : a1.length;
  const result = [];
  for (let i = 0; i < len; i++) {
    result.push([a1[i], a2[i]]);
  }
  return result;
}

var findDivergence = function (a1, a2) {
  const result = [];
  for (const [aa, bb] of zip(a1, a2)) {
    let divergences = 0;
    for (const [a, b] of zip(aa, bb)) {
      if (a !== b) divergences++;
    }
    result.push(`Length is ${divergences}`);
  }
  return result;
};

console.info(findDivergence([["a", "b", "c", "d", "e", "f", "g"], ["a", "b", "c", "d", "e", "f", "g"]], [["a", "b", "d", "r", "e", "q", "g"], ["a", "2", "d", "r", "e", "q", "g"]]));

Спасибо, это было то, что я хотел. Я думаю, что сначала менял переменную результата после каждой итерации.

Ola John Ajiboye 16.03.2019 01:10
Ответ принят как подходящий

Если я правильно понял, вам нужна основная переменная (желаемый результат) для накопленных различий в виде вложенных массивов.

    var findDivergence = function (a1, a2) {
	var desiredResult = [];
  for (let q = 0; q < a1.length; q++) {
    var result = [];
    for (i = 0; i < a1[q].length; i++) {
      if (a1[q][i] !== a2[q][i]) {
        result.push(i);
        console.info(result.length)
      }
    } desiredResult.push(result);
  }
  return desiredResult;

};

console.info(findDivergence([["a", "b", "c", "d", "e", "f", "g"], ["a", "b", "c", "d", "e", "f", "g"]], [["a", "b", "d", "r", "e", "q", "g"], ["a", "2", "d", "r", "e", "q", "g"]]));

Большое спасибо, он делает именно то, что я хотел.

Ola John Ajiboye 16.03.2019 01:05

Другие вопросы по теме