Javascript - 如果 array2 部分排序为 array1

问题描述 投票:0回答:2

如何在 javascript 中实现这种条件? (来自:vanillalodash

const array1 = [1, 2]
const array2 = [1, 2, 3, 4] //true
const array2 = [1, 3, 2, 4] //true
const array2 = [4, 3, 2, 1] //false
const array2 = [2, 3, 1, 4] //false

我试过这样的东西。

const _ = require('lodash');

const array1 = [1, 2];
const array2 = [1, 2, 3, 4];

const trimmed = array2.filter((n) => combinations.indexOf(n) > -1);
const isEqual = _.isEqualWith(array1, trimmed);
console.log(isEqual);

如果你有更清晰、更灵活的代码来解决这个问题,请发帖。

javascript arrays lodash
2个回答
0
投票

我试过这样的东西。

const _ = require('lodash')

const array1 = [1, 2]
const array2 = [1, 2, 3, 4]
  
const trimmed = array2.filter ((n) => combinations.indexOf (n) > -1)
const isEqual = _.isEqualWith (array1, trimmed)
console.log(isEqual)

如果你有更清晰、更灵活的代码来解决这个问题,请发帖。


0
投票

使用

Array.every()
检查
arr2
中的每一项是否未包含在
arr1
中或在
i
中找到(
arr1
的当前索引):

const fn = (arr1, arr2) => {
  let i = 0
  
  return arr2.every(v => !arr1.includes(v) || v === arr1[i++])
}

console.log(fn([1, 2], [1, 2, 3, 4])) // true
console.log(fn([1, 2], [1, 3, 2, 4])) // true
console.log(fn([1, 2], [4, 3, 2, 1])) // false
console.log(fn([1, 2], [2, 3, 1, 4])) // false

© www.soinside.com 2019 - 2024. All rights reserved.