метод массива для проверки наличия значения индекса между двумя массивами в JS

#javascript #arrays

#javascript #массивы

Вопрос:

Я хочу сравнить 2 массива и проверить, является ли значение 3 заданных индексов общим для 2 массивов. т.е.:

 arr1 = [1,2,1,0,0,0,2,2,2]
arr2 = [0,0,0,0,0,0,2,2,2]
 

или

 arr1 = [1,2,3,0,1,2,4,2,1]
arr2 = [1,0,0,0,1,0,0,0,1]
 

1-й пример здесь последние 3 индекса являются общими.
2-й пример здесь индекс 0,4,8 является общим.

есть ли какой-либо метод, который может принимать 2 массива и возвращать true, если индексы совпадают?

Комментарии:

1. Встроенного метода нет. Создайте функцию javascript, которая просматривает массив и проверяет значение по каждому индексу.

2. Если вы хотите вернуть true / false на основе результата сопоставления, попробуйте const data = arr1.map((item, i) => item > 0 amp;amp; arr2[i] === item ? true : false ); , например: codepen.io/Maniraj_Murugan/pen/BawNvbX

Ответ №1:

Это очень просто

 const equal = (a1, a2, ...indexes) => indexes.every(i => a1[i] === a2[i]);
 

Что я здесь делаю, так это объявляю функцию, которая принимает первый массив в качестве первого аргумента, а второй массив в качестве вторых параметров, теперь третий аргумент в основном группирует все остальные параметры.

Вы бы вызвали эту функцию следующим образом:

 equal([0, 2, 4, 6], [0, 1, 3, 6], 0, 3);
 

И это вернет true

Комментарии:

1. Пожалуйста, не публикуйте ответ на вопрос, если пользователь ничего не пытался.

Ответ №2:

Что-то вроде этого:

 const arr1 = [1,2,3,0,1,2,4,2,1]
const arr2 = [1,0,0,0,1,0,0,0,1]

const indexes = arr1.reduce((accumulator, current, index) => {
  if (arr2[index] === current) {
    accumulator.push(index)
  }
  return accumulator
}, [])

console.log(indexes)

// Outputs : [0,3,4,8] 

Комментарии:

1. Пожалуйста, не публикуйте ответ на вопрос, если пользователь ничего не пытался.