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

js对象怎么比较?

  •  
  •   sivacohan ·
    PRO
    · Jul 15, 2013 · 4514 views
    This topic created in 4711 days ago, the information mentioned may be changed or developed.
    a = {'a':1}
    b = {'a':1}

    a === b 这个是false

    对于复杂对象的比较是比较他们在内存里是不是同一地址吗?
    这个地方应该看点什么。或者查点什么?

    @Mutoo
    8 replies    1970-01-01 08:00:00 +08:00
    cmonday
        1
    cmonday  
       Jul 15, 2013   ❤️ 1
    是的。只有两个内存地址一致的对象才会在`===`判断中得到true

    如果需要判断内部的属性是否一致,只能做递归比较了,比如 underscore 的 isEqual 方法 http://underscorejs.org/#isEqual https://github.com/jashkenas/underscore/blob/master/underscore.js#L844-L938
    sivacohan
        2
    sivacohan  
    OP
    PRO
       Jul 15, 2013
    @cmonday 谢谢,有一个需求是比较两个object的变化。看起来只能自己动手实现一个了。
    coolicer
        3
    coolicer  
       Jul 15, 2013
    对象的比较是引用的比较。
    bakac
        4
    bakac  
       Jul 15, 2013
    比较字面量 就是toString 之后的
    darasion
        5
    darasion  
       Jul 15, 2013
    多数语言都会得到这个结果吧。不光js
    Golevka
        6
    Golevka  
       Jul 15, 2013
    @bakac bakac --- An optimizing compiler for baka, written in baka
    miniwade514
        7
    miniwade514  
       Jul 18, 2013
    a,b 只是两个引用,比较它们不能达到你的目的。
    Ricepig
        8
    Ricepig  
       Jul 18, 2013
    转json以后再比字符串,哈哈哈哈
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1395 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 23:57 · PVG 07:57 · LAX 16:57 · JFK 19:57
    ♥ Do have faith in what you're doing.