从json对象

时间:2016-05-27 10:14:36

标签: javascript jquery arrays json

我对json对象添加和删除数据有一个非常基本的说明。

考虑以下示例

var mainobject = JSON.parse('[{"Innerobject1":[{"Name" :"Xavier","Dup":"B"},{"Name" :"Gh","Dup":"B"}]},{"Innerobject2":[{"Name" : "Cat","Dup":"C"},{"Name":"Dog", "Dup":"D"}]}]');

var seen = {};

mainobject.forEach(function(inner_arr) {
Object.keys(inner_arr).forEach(function(k)
{
   inner_arr[k].forEach(function(obj) {

       if (seen[obj.Dup]) {
           obj.Dup = "";
       }

       seen[obj.Dup] = true;
       //alert(seen[obj.Dup]);
       //alert(seen.(obj.Dup));
    });
});
});
alert(JSON.stringify(mainobject, 0, 4));

在上面的例子中,

alert(seen[obj.Dup]);将值设为 true alert(seen.(obj.Dup));并没有给我任何价值。 我的理解是,当我们有一个json对象时,object.key应该给我值。

在同一个想法中,seen.(obj.Dup)理想情况下应该将警报视为“true”,因为看到的是json对象。 对象是否在运行时转换为数组?

1 个答案:

答案 0 :(得分:0)

当您使用alert(seen[obj.Dup])时,您实际上正在打印seen[obj.Dup]并且它始终是真的,因为您之前在该行上将其设置为true。

我不确定你要做什么但是在执行结束时你的字典seen等于这个{B: true, "": true, C: true, D: true}

我认为你可能会对点符号感到困惑。 如果你有

a = {'b': 'c', 'd': 'e'};
b = 'd'
// a.b == 'c'
// a[b] == a['d'] 
// a[b] == 'e'