2016-11-16 2 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/what-is-the-difference-between-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' в объект count – 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 ;

не работает без iteratio n?, Потому что я думаю, что объект obj не будет выполнен правильно, если объект правильно выполнен компилятором, вы получите длину.

Попробуйте этот образец скрипача. https://jsfiddle.net/1sb9r9uc/

вопрос 2:

Это в основном то же самое. Если идентификатор соответствует допустимому имени переменной, вы можете исключить «».

Смежные вопросы