好了,所以這孤單JSON對象:計數JSON對象的JavaScript
jsontext = {"switches":[{"dpid":"00-00-00-00-00-01"},{"dpid":"00-00-00-00-00-02"},{"dpid":"00-00-00-00-00-03"},{"dpid":"00-00-00-00-00-04"},{"dpid":"00-00-00-00-00-05"},{"dpid":"00-00-00-00-00-06"},{"dpid":"00-00-00-00-00-07"}],
"links":[["00-00-00-00-00-01","00-00-00-00-00-05"],["00-00-00-00-00-02","00-00-00-00-00-03"],["00-00-00-00-00-05","00-00-00-00-00-06"],["00-00-00-00-00-05","00-00-00-00-00-07"],["00-00-00-00-00-02","00-00-00-00-00-04"],["00-00-00-00-00-01","00-00-00-00-00-02"]]}
的目標是要計算所有存在於它的DPID對象......所以我做了迄今爲止以下內容:
function objectLength(obj) {
var result = 0;
for(var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// or Object.prototype.hasOwnProperty.call(obj, prop)
result++;
}
}
return result;
}
,我打電話讓在交換機
objectLength(jsontext.switches);
的問題是,DPID的量的功能時,有用於開關只有一個DPID ES是這樣的:
jsontext = {"switches":[{"dpid":"00-00-00-00-00-01"}],"links":[]}
它計數0 ...它不會爲部分做的事情......由於某種原因認爲其空我猜..?
TL; DR爲什麼當只有1個開關的DPID存在是JSON對象返回0 ..
乾杯!
你說什麼是不可重複的。你在'jsontext'的賦值中有一個尾部的引號,所以試圖運行它只會導致語法錯誤。如果刪除它,代碼將返回1,就像預期的那樣:http://jsfiddle.net/uu1mtL0g/此外,這裏根本沒有JSON,你擁有的是一個Javascript對象。 JSON是表示對象的文本格式。 – Guffa 2014-10-18 14:56:27