惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 非我

目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto 随手记录: MVC自定义提交form 在文本框的光标处插入指定的文本(另一种方式) 在文本框的光标处插入指定的文本(兼容IE6和Firefox) javascript对象的深拷贝 对mootools的颜色选择器做个小改进 用户中心 - 博客园 检查矩阵是否有线性相关性 - 非我 - 博客园 WOW笑话,笑死我了 动态修改/添加CSS文件链接 使用.net验证控件遇到的小麻烦 (转)40种网站设置技巧 访问者模式-Visitor 学习与思考 对Response.End的疑问 累啊~用记事本写的小程序 Observer pattern 观察者模式 艾薇尔新歌GrilFriend的MV Command Pattern - 命令模式(ASP.NET版) 动态控件的问题
Javascript对象的比较
非我 · 2008-05-20 · via 博客园 - 非我

这个随笔其实是为了感谢清风笑给的一个提示,不仅仅是告诉我怎么判断数组,更让我有了认真读一读 《javascript权威指南》的想法

比较和拷贝其实是一回事,代码如下:

//
//Compare object function
//
function Compare(fobj,sobj)
{
    var ftype 
= typeof(fobj);
    var stype 
= typeof(sobj);
    
    
if (ftype == stype)
    
{
        
if (ftype == "object"
        
{
            
if (fobj.constructor == Array && sobj.constructor == Array)//array
            {
                
return CompareArray(fobj,sobj)
            }

            
else if (fobj.constructor != Array && sobj.constructor != Array)//object
            {
                
return CompareObject(fobj,sobj);
            }

            
return false;
        }

        
        
return fobj == sobj;
    }

    
    
return false;
}


function CompareObject(fobj,sobj)
{
    
for (var ele in fobj)
    
{
        
if (sobj[ele] == undefined) return false;
        
        
if (!Compare(fobj[ele],sobj[ele]))
        
{
            
return false;
        }

    }

    
    
return true;
}


function CompareArray(farr,sarr)
{
    
if (farr.length != sarr.length)
    
{
        
return false;
    }

    
    
for (var i = 0; i < farr.length; i++)
    
{
        
if (!Compare(farr[i],sarr[i]))
        
{
            
return false;
        }

    }

    
    
return true;
}