推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
fourstring

如何优雅地判断输入的两个运算符(仅限于+-*/)的优先级?

  •  
  •   fourstring · Jan 22, 2017 · 4009 views
    This topic created in 3398 days ago, the information mentioned may be changed or developed.

    两个运算符以string形式输入

    13 replies    2017-01-24 09:41:19 +08:00
    fourstring
        1
    fourstring  
    OP
       Jan 22, 2017
    目前想了一个比较蛋疼的实现方式
    https://gist.github.com/fourstring/081234390c4e31ad1fd48ea46d04385d
    Fzzf
        2
    Fzzf  
       Jan 22, 2017
    table ,然后直接查表
    linboki
        3
    linboki  
       Jan 22, 2017 via Android
    二维数组
    hst001
        4
    hst001  
       Jan 22, 2017
    逆波兰表达式,遇到*/就出栈计算
    fourstring
        5
    fourstring  
    OP
       Jan 22, 2017   ❤️ 1
    @hst001 我就是在参考 https://zh.wikipedia.org/zh-hans/%E8%B0%83%E5%BA%A6%E5%9C%BA%E7%AE%97%E6%B3%95
    实现中缀式转逆波兰式。。。
    steel1990
        6
    steel1990  
       Jan 22, 2017 via Android
    给每个运算符指定一个数字,然后比较数字大小,多简单
    xjp
        7
    xjp  
       Jan 22, 2017   ❤️ 1
    直接构造一个 map 记录每个操作符权值 然后相减啊

    ```js
    function compare(op1, op2){
    var weightMap = {"x":1, "/":1, "+":0 ,"-":0 };
    return weightMap [op1] - weightMap [op2];
    }
    ```
    fourstring
        8
    fourstring  
    OP
       Jan 22, 2017
    @xjp 是在下输了
    zhidian
        9
    zhidian  
       Jan 22, 2017
    写好测试例子,然后 eval 不就可以了。比如:

    > eval("1"+"+"+"2"+"*"+"3")
    7

    说明是 * 优先级高。
    erlanye
        10
    erlanye  
       Jan 22, 2017
    if else(或 switch case),没有比这个更优雅的了,上面的回复都是画蛇添足。
    hxsf
        11
    hxsf  
       Jan 22, 2017 via iPhone
    在学编译原理?

    定义个 运算优先级表
    noNOno
        12
    noNOno  
       Jan 23, 2017
    skyitachi
        13
    skyitachi  
       Jan 24, 2017
    @Fzzf 和 @erlanye 都是可以的。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5483 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 08:56 · PVG 16:56 · LAX 01:56 · JFK 04:56
    ♥ Do have faith in what you're doing.