2016-11-16 63 views
2

對不起,我是一個新學生,抱歉,這是如此簡單,但即使經過一些研究,我仍然不明白這個對象。對象中的javascript簡單計數?

var obj = [ 
    {day:"monday", status:"present" , reason:""}, 
    {day:"tuesday", status:"present" , reason:""}, 
    {day:"wednesday", status:"absence" , reason:"sick"}, 

    ] 

是這樣的:

Total days: 3 
Total present: 2 
Total absence: 1 

我一定要使用迭代?

for (var key in obj) { 
    var currentObj = obj[key]; 
} 
var totaldays = obj.length ; 
console.log(totaldays); 

和爲什麼var totaldays = obj.length ;沒有迭代沒有工作?

也#2問題

{day:"monday", status:"present" , reason:""}, 

{"day":"monday", "status":"present" , "reason":""}, 

是那些相同或不?對不起,我覺得自己更喜歡在個人/社區進行提問,而不是在w3school中閱讀,或者我一遍又一遍地嘗試,並仍然感到困惑。 但我總是先讀,問是我最後的選擇

+0

這是數組對象 – RizkiDPrast

+0

#1'var totaldays = obj.length;'應該工作並且爲#2讀取[JSON和對象文字符號之間的區別是什麼?](http://stackoverflow.com/questions/2904131/json-and-object-literal-notation之間的區別是什麼) – Satpal

回答

3

Q1,計數

你可以使用一個對象與地位的關鍵和計數。

var obj = [{ day: "monday", status: "present", reason: "" }, { day: "tuesday", status: "present", reason: "" }, { day: "wednesday", status: "absence", reason: "sick" }], 
 
    count= { days: 0 }; 
 

 
obj.forEach(function (o) { 
 
    count[o.status] = (count[o.status] || 0) + 1; 
 
    count.days++; 
 
}); 
 
    
 
console.log(count);

Q2,object initializer

{ day: "monday", status: "present", reason: "" } 

{ "day": "monday", "status": "present", "reason": ""} 

基本上是相同的。如果標識符像一個有效的變量名稱,則可以省略引號。

+1

也在計數對象中加入'days' – Satpal

-1

你可以指望你的項目,如認爲:

Object.keys(obj).length 
+0

這不會有幫助。 – Rajesh

0

我做了一個小小提琴

var obj = [ 
    {day:"monday", status:"present" , reason:""}, 
    {day:"tuesday", status:"present" , reason:""}, 
    {day:"wednesday", status:"absence" , reason:"sick"}, 

    ] 
    var tdays=0; 
    var pr=0; 
    var ab=0; 
    tdays=obj.length; 
    for(var i=0;i<obj.length;i++) 
    { 
    if(obj[i].status=='present') 
    pr++; 

    if(obj[i].status=='absence') 
    ab++; 
    } 

    console.log('Total days:'+tdays) 
    console.log('Present: '+pr) 
    console.log('Absence:'+ab) 

這可能是有益的 https://jsfiddle.net/ubq4058s/

0

想想obj.length可以很好地工作,不要不知道爲什麼它不適用於數組。

對於問題#2,他們應該是一樣的,我通常不使用字符串作爲對象屬性的名稱就像{a:100}{"a":100}

下面的代碼工作得很好,並認爲這是很容易理解

var obj = [ 
    {day:"monday", status:"present" , reason:""}, 
    {day:"tuesday", status:"present" , reason:""}, 
    {day:"wednesday", status:"absence" , reason:"sick"} 
    ]; 

var present=0,absence=0; 

obj.forEach(function(v){ 
    if(v.status=="present") present+=1; 
    if(v.status=="absence") absence+=1; 
}); 

console.log("total days",obj.length); 
console.log("total present",present); 
console.log("total absence",absence); 
1

問題1:

var totaldays = obj.length ;

沒有沒有迭代的工作n ?, 因爲我認爲對象obj沒有得到正確執行,如果對象正確地由編譯器執行,您將獲得長度。

試試這個樣本小提琴手。 https://jsfiddle.net/1sb9r9uc/

問題2:

那些基本相同。如果標識符像一個有效的變量名稱,則可以消除「」。