2016-11-16 97 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:

那些基本相同。如果标识符像一个有效的变量名称,则可以消除“”。