如何在 javascript 中实现这种条件? (来自:vanilla 或 lodash)
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);
如果你有更清晰、更灵活的代码来解决这个问题,请发帖。
我试过这样的东西。
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)
如果你有更清晰、更灵活的代码来解决这个问题,请发帖。
使用
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