首页 > 解决方案 > Javascript - 找出第一个元素出现在排序数组以及另一个未排序集合中

问题描述

我有一个未排序数字数组和另一个排序数字数组,例如

const unSortedArray = [54, 23, 55, 76, 9, 11];
const sortedArray= [1, 2, 3, 4, ...., 100]

我怎样才能找出first element出现在 my中的sortedArraywhich 也应该是存在于 my 中的元素unSortedArray?在上面的示例中,应该返回 9,因为 9 存在于 unSortedArray 中,并且它位于 sortedArray 中的其他元素之前

请注意,我在上面的示例中使用了 1, 2, 3, 4 ,但我的真实示例不是数字而是GUID,假设我们不能应用排序方法unSortedArray然后选择第一个元素。

我考虑过合并两个数组,但是如何在不破坏 sortedArray 排序的同时合并两者?

这是一些例子

1) 输出应为 1,因为即使元素 1、2、9 和 10 都存在于两个数组中,1 的顺序优先于 sortedArray 中的 2、9、10

const unSortedArray = [54, 23, 55, 76, 9, 10, 2, 1]; 
const sortedArray= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 

2) 输出应该是 9,因为即使元素 9 和 10 都存在于两个数组中,9 在 sortedArray 中的顺序比 10 优先

const unSortedArray = [54, 23, 55, 76, 10, 9]; 
const sortedArray= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 

3) 输出应该是 '' 因为 unSortedArray 中没有元素出现在 sorted Array

const unSortedArray = [54, 23, 55, 76, 11]; 
const sortedArray= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 

标签: javascriptalgorithmsortingfilter

解决方案


使用 for 循环的一种快速而肮脏的方法:

const unSortedArray = [54, 23, 55, 76, 9, 11];
const sortedArray= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

let firstVal;
for (i = 0; i < sortedArray.length; i++) {
  if (unSortedArray.includes(sortedArray[i])) {
    firstVal = sortedArray[i];
    break;
  }
}

console.log(firstVal);


推荐阅读