前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】

// 实现 compareVersion 方法,用于比较两个版本号(version1、version2) * 如果version1 > version2,返回1; * 如果version1 < version2,返回-1; * 其他情况,返回0。 * 版本号规则x.y.z,xyz均为大于等于0的整数,至少有x位 * * 目标: * js * compareVersion('0.1', '1.1.1'); // 返回-1 * compareVersion('13.37', '1.2 '); // 返回1 * compareVersion('1.1', '1.1.0'); // 返回0 * compareVersion('1.1', '1.1.1'); // 返回-1 * */

javascript 复制代码
const compareVersions = (version1, version2) => {
    const v1Parts = version1.split('.').map(Number);
    const v2Parts = version2.split('.').map(Number);
    const maxLength = Math.max(v1Parts.length, v2Parts.length);
    for (let i = 0; i < maxLength; i++) {
        const v1 = v1Parts[i] ?? 0;
        const v2 = v2Parts[i] ?? 0;
        if (v1 > v2) {
            return 1; // version1 大于 version2
        } else if (v1 < v2) {
            return -1; // version1 小于 version2
        }
    }
    return 0; // 两个版本号相等
}
const version1 = "1.1";
const version2 = "1.1.1";
const result = compareVersions(version1, version2);
if (result === 1) {
    console.log(`compareVersions函数返回值→${result}:${version1} 大于 ${version2}`);
} else if (result === -1) {
    console.log(`compareVersions函数返回值→${result}:${version1} 小于 ${version2}`);
} else {
    console.log(`compareVersions函数返回值→${result}:${version1} 等于 ${version2}`);
}

/* 井字棋游戏。输入一个二维数组代表棋盘,

其中 * 『1』代表当前玩家的棋子,

『0』代表没有棋子,

『-1』代表对方玩家的棋子。 *

若一方棋子在横、竖、斜方向连成排则为获胜,返回当前玩家是否胜出。

  • 示例:入参为 [[1,0,1],[1,-1,-1],[1,-1,0]] 时,返回 true * */
    // 默认初始棋盘
    //如下initBoard代表初始化棋盘,分别对应井字棋盘九宫格的每个格子
    const initBoard = [

    0, 0, 0\], \[0, 0, 0\], \[0, 0, 0\], \]; const gameCheck = (board, currentPlayer = 1) =\> { const rows = board.length;//行 const cols = board\[0\].length;//列 // 检查行 for (let i = 0; i \< rows; i++) { if (board\[i\]\[0\] !== 0 \&\& board\[i\].every(cell =\> cell === currentPlayer)) { return true;//如果所有行都是为当前人下的那么就返回成功 } } // 检查列 for (let j = 0; j \< cols; j++) { let column = \[\]; for (let i = 0; i \< rows; i++) { column.push(board\[i\]\[j\]); } if (column\[0\] !== 0 \&\& column.every(cell =\> cell === currentPlayer)) { return true; } } // 检查对角线 // leftRight从左往右向下对角线 const leftRight = \[board\[0\]\[0\], board\[1\]\[1\], board\[2\]\[2\]

    // rightLeft从右往左向下对角线
    const rightLeft = [board[0][2], board[1][1], board[2][0]]
    if (leftRight.every((cell) => cell === currentPlayer) || rightLeft.every((cell) => cell === currentPlayer)) {
    return true
    }
    return false
    }
    const board = [

    1, 0, 1\], \[1, -1, -1\], \[1, -1, 0

    ];
    const playerWins = gameCheck(board);
    console.log(当前玩家是否胜出: ${playerWins});
相关推荐
蓝婷儿1 分钟前
每天一个前端小知识 Day 23 - PWA 渐进式 Web 应用开发
前端
无奈何杨11 分钟前
CoolGuard风控中新增移动距离和移动速度指标
前端·后端
恋猫de小郭18 分钟前
Google I/O Extended :2025 Flutter 的现状与未来
android·前端·flutter
江城开朗的豌豆22 分钟前
Vue-router方法大全:让页面跳转随心所欲!
前端·javascript·vue.js
程序员爱钓鱼32 分钟前
Go语言泛型-泛型约束与实践
前端·后端·go
前端小巷子33 分钟前
web从输入网址到页面加载完成
前端·面试·浏览器
江城开朗的豌豆34 分钟前
Vue路由动态生成秘籍:让你的链接'活'起来!
前端·javascript·vue.js
晓得迷路了34 分钟前
栗子前端技术周刊第 88 期 - Apache ECharts 6.0 beta、Deno 2.4、Astro 5.11...
前端·javascript·echarts
江城开朗的豌豆40 分钟前
在写vue公用组件的时候,怎么提高可配置性
前端·javascript·vue.js
江城开朗的豌豆40 分钟前
Vue路由跳转的N种姿势,总有一种适合你!
前端·javascript·vue.js