我想比较2个列表并得到3个变量:移动项目,偏移,方向.
例1:
旧名单= 121,120,119,43,42,41,40,39,38,37
新名单= 43,121,37
我将项目43移到列表的前面,
移动项目= 43
offset = 3(新老位置之间有3个项目)
direction = 1(向上移动)
例2
旧的nids = 121,37
新的nids = 121,37,42
我在列表末尾向下移动项目42,
移动项目= 42
offset = 5(新旧位置之间有5个项目)
direction = -1(向下移动)
我正在使用javascript来处理它.我可以使用哪种算法?或者我在谷歌搜索的提示是什么?非常感谢你!
解决方法
这里只有你的例子测试的东西.也许它至少可以提供一个可能的方向. (我可能遗漏了一些边界/特殊情况.)
var a1 = [121,37],b1 = [43,a2 = [121,b2 = [121,42]; function f(a,b){ var item,i = offset = 0,direction; while (a[i] == b[i]){ i++; } if (a[i + 1] == b[i]){ direction = -1; item = a[i]; while (b[i] != item){ offset++; i++; } } else { direction = 1; item = b[i]; while (a[i] != item){ offset++; i++; } } return [item,offset,direction] }
输出:
console.log(f(a1,b1)) Array [ 43,3,1 ] console.log(f(a2,b2)) Array [ 42,5,-1 ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。