javascript - javascript字符串数组中的顺序差异
问题描述
有没有一种简单的方法来获得两个字符串数组的顺序差异?
var A = ['a', 'b'];
var B = ['b', 'a'];
通过比较这两者,是否有一种简单的方法可以找出它们交换了索引?我在网上找不到任何有用的东西,而且我真的不想为此付出漫长而艰难的道路,因为我使用的阵列非常大。使用 dragtable 重新排序我的数据表的列,并且我不断将数据推送到它,所以每当订单更改时,我希望特定数据进入他们指定的列,这就是我需要它的原因,谢谢!
解决方案
您可以遍历一个数组并将当前值的索引与另一个给定数组中相同值的索引进行比较。如果两者都不匹配,您可以创建映射,其中包含每个值的不匹配矩阵,您可以将其用于进一步计算。见https://jsfiddle.net/f2jL46ke/
const arr1 = ['a', 'b', 'c']
const arr2 = ['b', 'c', 'a']
// I am assuming, that both arrays have an equal length
const differences = arr1.reduce((store, value) => {
const arr1Index = arr1.indexOf(value)
const arr2Index = arr2.indexOf(value)
if(arr1Index !== arr2Index) {
store[value] = [arr1Index, arr2Index]
}
return store
}, {})
console.log(differences)
通过这种方法,您知道 A) 哪些字符串不在数组中的相同位置,以及 B) 它们在两个数组中的位置。
推荐阅读
- python - python中的单位根分位数自回归
- java - 如何从 AWS Lambda 在 AWS EC2 实例上执行 JAR
- javascript - 传递给函数的默认变量值会在 IE11 中中断脚本,但似乎不需要
- android - 带有阴影效果的滚动透明工具栏
- javascript - JavaScript 纯 CRUD 编辑功能 - 更新/编辑表格中的输入字段
- apache-kafka - 带有窗口的 Kafka Streams 拓扑不会触发状态更改
- ios - 显示图像或自动播放视频,如 Instagram 提要
- list - 搜索列表列表的时间复杂度?
- java - 生命游戏振荡器和宇宙飞船不工作
- azure - 如果“foreach”中的所有值都为真