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"} 要怎么做呢。忘高手指点
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"} 要怎么做呢。忘高手指点
解决方案 »
- 关于JS 关键词高亮显示的代码,如何显示两位数字
- 这个属性值怎么添加到<a>标签中
- 弹出层问题 急
- 如何将extjs中的window显示在frame的外面?
- 我提交评论后由于评论在最下边,提交之后页面,页面刷新之后,如何滚动到我发表的评论的位置那,
- 高手进 帮我看看这段什么意思
- 急!在线等! js或css设置input或textarea的高度自动适应文本内容长度
- 关于:replace与RegEx
- 【急】不同分辨率下 js修正同一点坐标。
- 我以前在某个网站上见到过,怎样才能IE控制右边滚动条的颜色或者样式?
- 请问大家有没有javascript做的ajax表格控件
- javascript调用远端的webservice的性能怎样
<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>