array 数组的比较 diff 比较容易实现,但是json的没搞懂如何实现。看下面的array例子 function array_diff(){
            var arr1 = arguments[0], retArr = {};
            var k1 = '', i = 1, k = '', arr = {};
            arr1keys: for (k1 in arr1) {
                for (i = 1; i < arguments.length; i++) {
                    arr = arguments[i];
                    for (k in arr) {
                        if (arr[k] === arr1[k1]) {
                            continue arr1keys;
                        }
                    }
                    retArr[k1] = arr1[k1];
                }
            }
            return retArr;
        }
var arr1=[1,2,3,4,5,6];
var arr2=[1,2,3,4,5,7];
array_diff(arr2,arr1)
结果是==> 5>7   如果改为json结构var obj={
item:
[
{"name":"kane","id":"1001","stat":"0"},
{"name":"kane2","id":"1002","stat":"0"},
{"name":"kane3","id":"1003","stat":"0"},
{"name":"kane4","id":"1004","stat":"0"},
{"name":"kane5","id":"1005","stat":"0"}
]
}
var obj2={
item:
[
{"name":"kane","id":"1001","stat":"0"},
{"name":"kane2","id":"1002","stat":"0"},
{"name":"kane3","id":"1003","stat":"0"},
{"name":"kane4","id":"1004","stat":"1"},
{"name":"kane5","id":"1005","stat":"0"}
]
}diff(obj2,obj1) 的结果为{"name":"kane4","id":"1004","stat":"1"} 要怎么做呢。忘高手指点

解决方案 »

  1.   


    <script type="text/javascript">
    <!--
    var obj={ 
    item: 

    {"name":"kane","id":"1001","stat":"0"}, 
    {"name":"kane2","id":"1002","stat":"0"}, 
    {"name":"kane3","id":"1003","stat":"0"}, 
    {"name":"kane4","id":"1004","stat":"0"}, 
    {"name":"kane5","id":"1005","stat":"0"} 

    };
    var obj2={ 
    item: 

    {"name":"kane","id":"1001","stat":"0"}, 
    {"name":"kane2","id":"1002","stat":"0"}, 
    {"name":"kane3","id":"1003","stat":"0"}, 
    {"name":"kane4","id":"1004","stat":"1"}, 
    {"name":"kane5","id":"1005","stat":"0"} 



    var item1 = obj.item, item2 = obj2.item, result = [];
    for(var i = 0, len = item1.length; i < len; i++){
    for(var j in item1[i]){
    if(item1[i][j] != item2[i][j]){
    result.push(item2[i]);
    }
    }
    }
    // 输出结果
    for(var k = 0, len1 = result.length; k < len; k++){
    for(var n in result[k]){
    document.write(n + ' : ' + result[k][n] + ' , ');
    }
    document.write('<br/>');
    }//-->
    </script>