ведь она по сути "не сдвинутась"
только 6 и 4
function getMoveMessages(appliedList, draftList) {
const getId = r => (r.rule_id ?? r.id).toString();
const appliedPosMap = new Map();
appliedList.forEach((r, idx) => appliedPosMap.set(getId(r), idx + 1));
const draftPosMap = new Map();
draftList.forEach((r, idx) => draftPosMap.set(getId(r), idx + 1));
const messages = [];
draftList.forEach(r => {
const id = getId(r);
const appliedPos = appliedPosMap.get(id);
const draftPos = draftPosMap.get(id);
if (appliedPos !== draftPos) {
// Если правило сместилось с исходной позиции
if (appliedPos < draftPos) {
messages.push({ id: r.id, msg: `Rule moved to line ${draftPos}` });
} else if (appliedPos > draftPos) {
messages.push({ id: r.id, msg: `Rule moved from line ${appliedPos}` });
}
}
});
return messages;
}
const appliedList = ["7","6","5","4","3","2","1"].map(n => ({id:n, rule_id:null}));
const draftList = ["7","5","4","6","3","2","1"].map(n => ({id:n, rule_id:null}));
console.log(getMoveMessages(appliedList, draftList));