var A = [
{
test1:"value1",
test2:"value2",
test3:[
{
test1:"value3",
test2:"value4",
test3:1
}, {
test1:"value5",
test2:"value6",
test3:0
}
]
}, {
test1:"value7",
test2:"value8",
test3:1,
test4:{
wc: "wc"
}
}, {
wc : "wc"
}
]
var B = [
{
test1:"value10",
test2:"value20",
test3:[
{
test1:"value30",
test2:"value40",
test3:10
}
]
}, {
test1:"value70",
test2:"value80",
test3:10
}
]function BtoA(a, b) {
var t;
for (var i in a) {
t = typeof b[i];
if (t == "undefined") {
b[i] = a[i];
} else if (t == "object" || t == "array") {
BtoA(a[i], b[i]);
}
}
}
BtoA(A, B);
document.write(B.toJSONString());
</script>

解决方案 »

  1.   

    兄弟,好像有点不对啊我的要求是以A结构为主,就是如果B结构比A结构要多的话就不列出多出的结构而只列对应的A结构,但是我在您的例子中在B结构中加多一些A结构没有的东西仍然会列出来啊兄弟能辛苦一下帮忙改进吗
      

  2.   

    哦。..我还以为你用A要补B结构呢...
    那么你的意思就是说...
    如果B比A多了就把多的那个喀嚓掉是吧?
      

  3.   

    function BtoA(a, b) {
    var t;
    for (var i in a) {
    t = typeof b[i];
    if (t == "undefined") {
    b[i] = a[i];
    } else if (t == "object" || t == "array") {
    BtoA(a[i], b[i]);
    }
    }
    }
    function delB(a, b) {
    var t;
    for (var i in b) {
    t = typeof a[i];
    if (t == "undefined") {
    delete b[i];
    } else if (t == "object" || t == "array") {
    delB(a[i], b[i]);
    }
    }
    }
    delB(A, B);
    BtoA(A, B);
    加个删除的动作就可以啦...
    写到一起的话...估计好麻烦..
      

  4.   

    兄弟能加我 msn 吗,日后有问题直接向你请教msn:[email protected]
      

  5.   

    忽忽..当然没有问题..
    不过现在MSN网络很不稳定的说.....我都郁闷了...
    加了你了..
    [email protected]