将一个节点集合以最少的步骤转换为另一个节点集合
在avalon中,遇到一个问题,如果我们对一个数组进行排序,无论是按某一规则排序还是乱序,我们都要对对应的DOM区域进行排序。典型的是grid中的TR排序与LI元素的排序。
var old = [0, 1, 2, 4, 5, 6, 7, 8], neo = mess(old.concat())
var n = neo.length;
function mess(arr) {
var _floor = Math.floor, _random = Math.random,
len = arr.length, i, j, arri,
n = _floor(len / 2) + 1;
while (n--) {
i = _floor(_random() * len);
j = _floor(_random() * len);
if (i !== j) {
arri = arr[i];
arr[i] = arr[j];
arr[j] = arri;
}
}
return arr;
}
console.log("old " + old);
console.log("neo " + neo)
for (var i = 0; i < n; i++) {
var a = old[i], b = neo[i];
if (a !== b) {
old.splice(i, 1);//这里相当于removeChild
old.push(a);//这里相当于appendChild
console.log(old);
i = i - 1
}
}
console.log("---" + old + "----")
机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
浙公网安备 33010602011771号