参照“猫眼电影”购票选座规则:
/*
* 影院选座验证
* param {Array} arr
* param {Object} options.ok验证成功回调函数,options.cancel验证失败回调函数
* return {Boolean} 验证成功返回true,失败返回false
*/
function getAdjacentItem(arr, options) {
var arrLength = arr.length;
var nextItems = [];
if (!arrLength) {
return false;
}
if (arrLength === 1) {
options.ok && options.ok(arr);
return true;
}
arr.sort(function (a, b) {
if (a.y === b.y && Math.abs(a.x - b.x) === 1) {
nextItems.push({
a: a,
b: b
});
}
return a.y - b.y;
});
if (arrLength % 2) {
if (Math.floor(arrLength / 2) === nextItems.length) {
options.ok && options.ok(arr);
return true;
}
} else {
if (arrLength / 2 === nextItems.length) {
options.ok && options.ok(arr);
return true;
}
}
options.cancel && options.cancel(arr);
return false;
}
示例:请点这里