微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 比较2列表获取移动id偏移方向

我想比较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 举报,一经查实,本站将立刻删除。

相关推荐