Как проверить равенство массива с помощью Reduce, используя деструктуризацию и рекурсию? - PullRequest
0 голосов
/ 10 октября 2018

Как бы вы проверили равенство двух массивов с помощью помощника приведения, деструктуризации и рекурсии?

const isEqual = (arr1, arr2) => {
  // use reduce helper to check arrays for equality, use destructuring and recursion
}

Так что, очевидно, isEqual([1,2,3], [1,2,3]) должен возвращать true например, а что-то вроде isEqual(["hello", "there"], ["good", "morning"]) должно возвращаться false.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете использовать рекурсивный подход с расширенным синтаксисом ..., проверкой элементов и проверкой длины '.

const isEqual = ([v, ...a], [w, ...b]) => {
    return v === w && a.length === b.length && (a.length === 0 || isEqual(a, b));
}

console.log(isEqual([1, 2], [1, 2, 3]));
console.log(isEqual([1, 2, 3], [1, 2, 3]));
console.log(isEqual([1, 2, 3, 4], [1, 2, 3]));
console.log(isEqual(["hello", "there"], ["good", "morning"]));
0 голосов
/ 10 октября 2018

Вы можете упорядочить массивы, используя JSON.stringify() перед сравнением:

const isEqual = (arr1, arr2) => {
  var flag = JSON.stringify(arr1)==JSON.stringify(arr2)? true : false;
  return flag;
}
console.log(isEqual([1,2,3], [1,2,3])); //true
console.log(isEqual(["hello", "there"], ["good", "morning"])); //false
console.log(isEqual([1, '2', 3], [1,2,3])); //false
...