我对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对象。
对象是否在运行时转换为数组?
答案 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'