按照js按值傳遞res[obj.category].bytes = '修改'應(yīng)該是不會修改__array里面的值才對,但是res.__array.push(res[obj.category] = obj);使用這種賦值方式,修改res[obj.category].bytes值__array里面的值會一起變更。這要理解成java的引用類型嗎?var dataObject=[ { "category" : "Search Engines", "hits" : 5, "bytes" : 50189 }, { "category" : "Content Server", "hits" : 1, "bytes" : 17308 }, { "category" : "Content Server", "hits" : 1, "bytes" : 47412 }, { "category" : "Search Engines", "hits" : 1, "bytes" : 7601 }, { "category" : "Business", "hits" : 1, "bytes" : 2847 }, { "category" : "Content Server", "hits" : 1, "bytes" : 24210 }, { "category" : "Internet Services", "hits" : 1, "bytes" : 3690 }, { "category" : "Search Engines", "hits" : 6, "bytes" : 613036 }, { "category" : "Search Engines", "hits" : 1, "bytes" : 2858 } ];var result = dataObject.reduce(function(res, obj) { if (!(obj.category in res)) res.__array.push(res[obj.category] = obj); else res[obj.category].bytes = '修改' return res;}, {__array:[]})
javascript 特性
HUWWW
2018-12-19 18:19:20