есть ли функция для сравнения значений массивов и извлечения индексных номеров совпадений?

#javascript #vue.js

#javascript #vue.js

Вопрос:

У меня есть два массива строк, и я хочу сравнить их по значению и извлечь индексные номера идентичных элементов MainArray, которые доступны, например, во secondArray:

 var mainArray = ["I", "am", "not", "a", "doctor"]
var secondArray = ["am", "doctor"]

var Result = [1,4]
  

Ответ №1:

вы можете использовать Array.prototype.indexOf()

 const mainArray = ["I", "am", "not", "a", "doctor"];
const secondArray = ["am", "doctor"];
const result = secondArray.map(w => mainArray.indexOf(w));
console.log(result);  

Примечание: это решение вернет -1 для тех случаев, когда строка не совпадает.

Ответ №2:

Вы можете использовать intersection метод lodash библиотеки.

 const mainArray = ["I", "am", "not", "a", "doctor"]
const secondArray = ["am", "doctor"]

const result = _.intersection(mainArray, secondArray)
const resultIndices = result.map(i => mainArray.indexOf(i))

console.log(result)
console.log(resultIndices)  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>