Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
                        
                    
                
            
        
            
        
                
                    
                
            
                
                    想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                
                    6年前关闭。
            
        

    

我在包含以下内容的表单上有一个ID为search_json的文本字段:

{"standard_id":"2","attribute1":["","Stan"],"attribute2":[""],"attribute3":["","Air Force"],"attribute4":["","Bob"],"selected_index":3}


发生某些事件时,将其称为按钮单击,我想:

1)读取该JSON并将其解析为一个对象:

search_json = $.parseJSON($("#search_json").val())


2)从对象中删除“ attribute1”

delete search_json["attribute1"]


3)写回JSON到文本字段:

$("#search_json").val(JSON.stringify(search_json))


不过,我很惊讶它没有起作用。 delete调用不执行任何操作。事实上,

search_json.hasOwnProperty("attribute1")


返回false。但是我可以将对象记录到控制台,它的确是具有这些值的对象。这是怎么了?

更新:实际上,

search_json.hasOwnProperty("attribute1")


确实有效。但是,如果我从另一个文本字段获得属性名称,则如下所示:

attribute_name = $("#attribute_name").attr("id")


和:

console.log attribute_name


显示“ attribute1”,则此方法无效:

search_json.hasOwnProperty(attribute_name)


返回FALSE。神秘的。

最佳答案

我不明白我正在使用您的小提琴代码,一切都正确

http://jsfiddle.net/ddQbe/1/

最后的对象是:

attribute2: Array[1]
attribute3: Array[2]
attribute4: Array[2]
selected_index: 3
standard_id: "2"


attribute1是删除正确性

09-17 01:08