-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
1447 lines (1251 loc) · 33 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="/assest/css/style.css">
<link rel="stylesheet" href="/main.js">
</head>
<body>
<div id="weather">
<input type="text" class="search">
<div class="content">
<h1 class="capital">
<span class="city">Ha Noi</span>
<span >,</span>
<span class="country">VN</span>
</h1>
<time class=""></time>
</div>
</div>
</body>
</html>
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
body{
font-family: sans-serif;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(to bottom,rgba(0,0,0 ,0.7),rgba(0,0,0 ,0.1)), url();
}
#weather{
width: 350px;
border-radius: 10px;
padding: 30px 20px;
background: yellowgreen;
}
.search{
width: 100%;
padding:10px 20px;
border: none;
outline: none;
background: rgba(255,255,255,0.7);
border-radius: 0 15px 0 15px;
box-shadow: 0 5px 4px rgba(0,0,0 ,0.2);
transition: 0.4s;
}
.search:focus{
background: rgba(255,255,255,0.7);
border-radius: 15px 0 15px 0;
}
.content{
text-align: center;
color: aliceblue;
margin: 40px;
}
.capital{
text-shadow: 2px 2px rgba(0,0,0 ,0.5);
}
// khai bao bien
var fullName ='le quy doan';
var age = 26;
// goi ham thong bao
alert(fullName);
alert(age);
// ham console
console.log('thu thuat hack');
// ham confirm
confirm('xac nhap ban du tuoi!');
// ham promt
prompt('xac nhap ban du tuoi!');
// thuc thi doan code sau khoang thoi gian dc an dinh
setTimeout(function() {
alert('thong bao')
},6000)
// ham setinterval
setInterval(function() {
// alert('thong bao' + Math.random())
}, 1000)
// toan tu so hoc
var a= 1+2;
alert(a);
// toan tu so sanh
var a=1;
var a=2;
if(a<b){
alert('dung');
}
// -----------------------------------------------------------
// toán tử ++ & -- việc 1 : + 1 cho a: a= a+1 ==> a=7
// việc 2 trả về a sau khi được +1
var a = 6
++a; //tiền tố trả thẳng gía trị còn hậu tố a++ thì trả về a coppy ex: a++ tăng 6 lên 1 nhưng trả về 6
// trường hợp trả về
// var output= ++a;
// console.log('output: ', output );
console.log(a);
// -----------------------------------------------------
var a =6;
// việc 1 'a copy', a copy= 6
// vệc 2: trừ 1 của a , a = a-1=5
// việc 3 trả về a copy
var output= a--;
console.log('output: ', output );// output :6;
console.log('a: ', a) // a=7
// -----------------------------------------------------------
// toán tử nối chuỗi
var fullName = 'son'
var lastName = 'dang'
console.log(fullName + lastName);
// boolean
var nameSuccist = true;
console.log(nameSuccist);
// \\\\\\\\\\-----------------------
var a=1
var b=2
var nameSuccist = a<b ;
console.log(nameSuccist);
/**
* Truthy và Falsy là gì?
Truthy - to bool is true
Bất cứ giá trị nào trong Javascript khi chuyển đổi sang kiểu dữ liệu boolean mà có giá trị true thì ta gọi giá trị đó là Truthy.
Các giá trị 1, ['BMW'], { name: 'Miu' } và 'hi' được đề cập trong ví dụ dưới đây là Truthy vì khi chuyển sang Boolean ta nhận được giá trị true.
Ví dụ:
console.log(Boolean(1)) // true
console.log(Boolean(['BMW'])) // true
console.log(Boolean({ name: 'Miu' })) // true
console.log(!!'hi') // true
!! là gì? Đơn giản thôi. Toán tử ! là toán tử not (phủ định) nên !! là 2 lần phủ định, mà 2 lần phủ định lại trở thành "khẳng định". Trong Javascript thì đây là một "tip" để convert (chuyển đổi) mọi kiểu dữ liệu khác sang Boolean.
Ví dụ:
console.log(!!1) // true
console.log(!!'f8') // true
console.log(!!['Mercedes']) // true
Thêm !! phía trước các giá trị truthy sẽ luôn trả về true.
Falsy - to bool is false
Bất cứ giá trị nào trong Javascript khi chuyển đổi sang kiểu dữ liệu boolean mà có giá trị false thì ta gọi giá trị đó là Falsy.
Trong Javascript có 6 giá trị sau được coi là Falsy:
false
0 (số không)
'' or "" (chuỗi rỗng)
null
undefined
NaN
Ví dụ:
console.log(!!false) // false
console.log(!!0) // false
console.log(!!'') // false
console.log(!!null) // false
console.log(!!undefined) // false
console.log(!!NaN) // false
Chú ý!
Nội dung đã đề cập phía trên đã đầy đủ khi nói về Truthy và Falsy trong Javascript. Tuy nhiên mình vẫn cần nhấn mạnh lại với các bạn rằng:
Ngoài 6 giá trị đã đề cập tới ở phần Falsy thì toàn bộ các giá trị khác đều là Truthy, kể cả những giá trị sau:
'0' (một chuỗi chứa số không)
' ' (một chuỗi chứa dấu cách)
'false' (một chuỗi chứa từ khóa false)
[] (một array trống)
{} (một object trống)
function(){} (một hàm "trống")
Một số người chuyển từ ngôn ngữ khác sang rất có thể sẽ bị nhầm [] (mảng "rỗng") là falsy, bởi vì trong ngôn ngữ họ đã học trước đó [] là falsy.
Với những người hiểu nhầm [] là falsy sẽ gặp trường hợp khó hiểu sau:
Ví dụ:
var cars = [] // Dù là mảng "rỗng" vẫn là truthy
if (!cars) {
// Họ sẽ thắc mắc: "Tại sao lại không lọt vào đây?"
}
Vì [] là truthy nên !cars sẽ trả về false. Câu lệnh if sẽ nhận được kết quả của mệnh đề so sánh là false, vì vậy đoạn mã trong if trên sẽ không được lọt vào.
Ngoại lệ? - document.all
Trong Javascript (phía trình duyệt) sẽ có sẵn một đối tượng document, và khi bạn thử !!document.all sẽ trả về false. Chẳng lẽ document.all cũng là falsy hay sao?
Bản thân mình cũng thắc mắc điều này nên mình đã search Google "Why document.all is falsy?" và mình đã tìm được câu trả lời tại đây.
Tóm tắt câu trả lời:
document.all là một ngoại lệ chính thức duy nhất theo đặc tả ECMA (phiên bản 5). Đặc tả này mô tả toàn bộ các object khi chuyển sang boolean sẽ là true. Tuy nhiên, document.all là một ngoại lệ.
Cụ thể như sau:
document.all chuyển sang boolean sẽ là false
document.all khi là toán hạng của toán tử so sánh == hoặc != sẽ là undefined
Khi typeof document.all sẽ trả về "undefined"
ECMA là đặc tả chi tiết kỹ thuật mà các ngôn ngữ theo đặc tả này phải tuân theo. Javascript là một ngôn ngữ tuân thủ đặc tả kỹ thuật ECMA.
*/
// hàm
function showDialog() {
alert("dinh nghia ham"); //
}
showDialog();
// tham so trong ham -khi dinh nghia ra goi la tham so
function writeLog(message) {
console.log(message);
}
showDialog('text message');
// đối tượng arguments
//param là một biến chứa từng đối số được truyền cho hàm.
function writeLog(){
console.log(arguments);
}
writeLog();
// for
function writeLog(){
for(var param of arguments){
cosole.log(param)
}
}
writeLog('log_1', 'log 2', 'log_3');
// trường hợp dùng for in 3 giá trị log_1,log_2, log_3 trên cùng 1 dòng
function writeLog(){
var myString = '';// gán giá trị là chuỗi rỗng có ba khoảng trắng.
// for - of lặp qua các tham số và ghi chúng vào console.
for(var param of arguments){
myString += '$(param) -'
}
cosole.log(myString);
}
writeLog('log_1', 'log 2', 'log_3');
// =========================================
// các loại hàm
// hàm 1: declacation function
function writeLog(){
}
// hàm 2 expresstion function
var showMessage2= function(){
}
setimeout (function(){
})
var myObiject= {
myFunction: function(){
}
}
// độ dài chuỗi length
var myString= "toi da di hoc";
console.log(myString.length);
// find index tìm đc vị trí của 1 kí tự nằm trong 1 chuỗi
var myString= "toi da di hoc";
console.log(myString.indexOf("da"));
// 2 ... tim vi tri va tra ve vi tri cuoi cung trong chuoi
var myString= "hoc js tai f8! js";
console.log(myString.lastIndexOf("js",));
//cut string
var myString= "hoc js tai f8";
console.log(myString.slice(4, 6));
// replace ghi đè
var myString= "hoc js tai f8";
console.log(myString.replace('js','jvs'));
// ghi đè tất cả chữ js trong chuỗi
var myString= "hoc js tai js js f8";
console.log(myString.replace(/js/g,'jvs'));
// convert to upper case chuyển đổi tất cả chữ thành in hoa
var myString= "hoc js tai f8";
console.log(myString.toUpperCase());
// convert to lower case chuyển đổi tất cả chữ thành in thường
var myString= "hoc js tai f8";
console.log(myString.toLowerCase());
// trim loại bỏ khoảng trắng ở hai đầu
var myString= " hoc js tai f8 ";
console.log(myString.trim());
// split cắt 1 chuỗi thành 1 array
var languages ='Javascript, PHP, RUBY';
console.log(languages.split,', ');
// get a character by index tra ve ki tu
const myString2 ='son dang';
console.log(myString2.charAt(0));
/**
* làm việc với số
*
Phương thức Vai trò
Number.isFinite() Xác định xem giá trị đã cho có phải là số hữu hạn hay không. Trả về boolean
Number.isInteger() Xác định xem giá trị đã cho có phải là số nguyên hay không. Trả về boolean
Number.parseFloat() Chuyển đổi chuỗi đã cho thành một số dấu phẩy động
Number.parseInt() Chuyển đổi chuỗi đã cho thành một số nguyên
Number.prototype.toFixed() Chuyển đổi và trả về chuỗi đại diện cho số đã cho, có số chữ số chính xác sau dấu thập phân
Number.prototype.toString() Chuyển đổi và trả về số đã cho dưới dạng chuỗi
*/
// tạo giá trị với number
var result = 20 /'ABC';
console.log(result);// trả về NaN kiểu số k hợp lệ
// kiểm tra giá trị NaN
var result = 20 /'ABC';
console.log(isNaN(result));
/**
* to string
*/
var age =18;
var PI=3.14;
console.log(age.toString());
/**
* to fixed
*/
var PI=3.14;
console.log(PI.toFixed());
/**
* mảng array -------------------////
**/
var language = [
'javascript',
'PHP',
'Ruby',
];
console.log(language);
// kiểm tra biến có phải là array ko
console.log(Array.isArray(language));
/**
* truy xuất độ dài của mảng
*/
var language = [
'javascript',
'PHP',
'Ruby',
];
console.log(language.length)
// lấy phần tử the index
var language = [
'javascript',
'PHP',
'Ruby',
];
console.log(language[0]);
/**
* +===================================
*/
// làm việc vs array
var language = [
'javascript',
'PHP',
'Ruby',
];
cosole.log(language.toString) // chuyển kiểu dữ liệu array sang chuỗi
// join sử dụng để kết hợp các phần tử của một mảng thành một chuỗi
cosole.log(language.join(', '))
// pop sẽ xóa đi phần tử ở cuối mảng và nó sẽ trả lại chính phần tử mà nó đã xóa
console.log(language.pop());
console.log(language);
// push thêm 1 phần tử vào cuối mảng
console.log(language.push('Dart'));
console.log(language);
// shift sẽ xóa đi phần tử ở đầu mảng và nó sẽ trả lại chính phần tử mà nó đã xóa
console.log(language.shift());
console.log(language);
// unshift thêm 1 phần tử vào đầu mảng
console.log(language.unshift('Dart'));
console.log(language);
/**
splicing xoas cắt chèn phần tử mới vào mảng """"""""
*
*/
// xóa
language.splice(1 , 1)
console.log(language);
// chèn
language.splice(1 , 0, 'Dart')
console.log(language);
/**
* concat hàm giúp nối đc array
*/
var language = [
'javascript',
'PHP',
'Ruby',
];
var language2 = [
'Dart',
'Ruby',
]
console.log(language.concat(language2));
/**
* slicing dùng để cắt 1 vài element của mảng hay toàn bộ
*/
var language = [
'javascript',
'PHP',
'Ruby',
];
console.log(language.slice(1, 2));
/**
* object
*/
var myInfor = {
name: 'doan le',
age: 18,
adress: 'ha noi, vn'
};
myInfor.email = '[email protected]';
// myInfor['my-email'] = '[email protected]';
console.log(myInfor);
1//c1 cách lấy valude ra ngoài
console.log(myInfor.name);
2// c2
console.log(myInfor['adress']);
/////
var myInfor = {
name: 'doan le',
age: 18,
adress: 'ha noi, vn'
};
var myKey = 'adress'
console.log(myInfor[mykey]);// lấy ra chữ ha noi vn
///////
var emailKey = 'email';
var myInfor = {
name: 'doan le',
age: 18,
adress: 'ha noi, vn',
[emailKey]: '[email protected]', //in ra dòng email ko phải emailkey
};
// cách xóa cặp keyvalude r=trong 1 object
delete myInfor.age;
console.log(myInfor);
// value là 1 funtion
var myInfor = {
name: 'doan le',
age: 18,
adress: 'ha noi, vn',
[emailKey]: '[email protected]',
getName: function(){
return this.name;
}
};
console.log(myInfor.getName());
// Object constructor -- xay dựng đối tượng
function User(firstName, lastName, avatar) {
// this :mô tả thuộc tính và phương thức sẽ có cho đối tượng
this.firstName = firstName;//
this.lastName = lastName;
this.avatar = avatar;
//phương thức --
this.getName = function () {
return `${this.firstName} ${this.lastName}`;
}
}
var author = new User('doan', 'le', 'avatar');
var user = new User('phú', 'nguyễn', 'avatar');
// author.title = 'hoc lap trinh tai f8'
// user.comment = 'bài này khó quá ad 🤪'
console.log(author);
console.log(user);
// Object prototype -Basic làm hàm nguyên mẫu để tajo nên 1 đối tượng
function User(firstName, lastName, avatar) {
// mô tả thuộc tính và phương thức sẽ có cho đối tượng
this.firstName = firstName;
this.lastName = lastName;
this.avatar = avatar;
//phương thức --
this.getName = function () {
return `${this.firstName} ${this.lastName}`;
}
}
// prototype giúp thêm đc 1 thuộc tính ở bên ngoài hàm tạo
User.prototype.className = 'f8';
var user = new User('doan', 'le', 'avatar');
var user2 = new User('phú', 'nguyễn', 'avatar');
console.log(user.className);
console.log(user2.getClassName());
// đối tượng date
var date = new Date();
// console.log(date);
//lấy ra năm
console.log(date.getFullYear());
/////
var date = new Date();
var year =date.getFullYear();
var month =date.getMonth() +1;
var day = date.getDate();
console.log(`${day} ${month} ${year}`);
/**
* math object
* - math.PI
* - math.round()
* - math.abs()
* - math.ceil()
* - math.floor()
* - math.random()
* - max.min()
* - max.max()
*/
// trả về số pi hoàn chỉnh
console.log(math.PI)
// làm tròn số
console.log(math.round)
// trả về giá trị tuyệt đối
console.log(math.abs());
//làm tròn trên
console.log(math.ceil())
// làm tròn dưới
console.log(math.floor())
// trả về số thập phân nhỏ hơn 1
console.log(math.random())
// tỉ lệ ngẫu nhiên
var random = math.floor(math.random() * 5)
var bonus = [
'10 coins',
'20 coins',
'30 coins',
'40 coins',
'50 coins',
];
console.log(bonus[random])
// =====tỉ lệ random thấp ======
var random = math.floor(math.random() * 5)
if(random < 50){
console.log('cường hóa thành công!')
}
// trả về số nhỏ nhất
console.log(math.min(-100 ,1, 80, 40)) // trả về -100
//trả về số lớn nhất
console.log(math.max(-100 ,1, 90, 50)) // trả về 90
/**
* lệnh rẽ nhánh toán tử 3 ngôi
*/
// /// cần so sánh đúng sai -- số lượng case < 3 case sd if else
var date = 2;
if(date === 2){
console.log('hôm nay là thứ 2');
}else if(date === 3){
console.log('hôm nay là thứ 3');
}else if(date === 4){
console.log('hôm nay là thứ 4');
} else {
console.log('không biết')
}
// switch case
// /dc cho trc gia tri (2 -8) >= 3 case
var date = 2;
switch(date) {
case 2:
console.log('hom nay la thu 2');
break;
case 3:
console.log('hom nay la thu 3');
break;
case 4:
console.log('hom nay la thu 4');
break;
case 5:
console.log('hom nay la thu 5');
break;
default:
console.log('ko biet')
}
// toán tử 3 ngôi
var course = {
name: 'javascript',
coin: 250,
}
// if(course.coin > 0){
// console.log(`${course.coin} Coin`)
// } else {
// console.log('miễn phí')
// }
var result = course.coin > 0 ? `${course.coin} Coin` : 'miễn phí';
console.log(result);
/**
* vòng lặp
* 1, for: - lặp với điều kiện đúng
* 2, for/in - lặp qua key của đối tượng
* 3, for/of - lặp qua value của đối tượng
* 4, while - lặp khi điều kiện đúng
* 5, do/while - lặp ít nhất 1 lần sau đó
* lặp khi điều kiện đúng
*/
for (var i=1; i <= 1000; i++){
// code
}
/*
Hãy tạo hàm getRandNumbers có 3 tham số là min, max, length.
Hàm này sẽ trả về một mảng gồm length phần tử,
các giá trị trong mảng là số ngẫu nhiên, giá trị trong khoảng từ min tới max.
Gợi ý: Math.random() * (max - min) + min là cách tạo ra 1
số ngẫu nhiên trong khoảng min - max.
*/
function getRandNumbers(min,max,length) {
var arr = []
for (var i=0; i<length; i++) {
arr.push(Math.random() * (max-min) + min)
}
return arr
}
// trường hợp 2
var myArray = [
'javascript',
'PHP',
'java',
'dart'
]
var arrayLength = myArray.length;
for(var i =0;i<arrayLength;i++){
// console.log(i);
console.log(myArray[i]);
}
// for/in
/* For ... in dùng để duyệt qua key của Object và duyệt các
index trong 1 chuỗi*/
var myInfor = {
name : 'son dang',
age: 18,
address: 'ha noi, vn'
}
for(var homework in myInfor){
// console.log(homework);
console.log(myInfor[homework]);
}
// for/of
/* 1: sử dụng trong trường hợp muốn lấy ra những phần tử của mảng
lấy ra từng chữ cái của 1 chuỗi
2: For ... of dùng để duyệt qua các phần tử của mảng và duyệt
các phần tử trong 1 chuỗi*/
var language = [
'language',
'data',
'string'
];
for (var value of language){
console.log(value)
}
// c2 lấy ra object
var myInfor = {
name: 'doan',
age:18,
};
//console.log(Object.keys(myInfor));//trả về 1 mảng các key
/**
*c1 : for (var value of Object.keys(myInfor)){
console.log(myInfor[value]);
}
*/
/**
* Object.keys đơn giản , keys() là 1 phương thức của
* đối tượng Object dùng để trả về mảng các key của Object đó
*/
for (var value of Object.value(myInfor)){
console.log(value);
}
// while
var i = 1;
while(i <= 1000){
console.log(i)
i++;
}
// th1
var myArr = [
'javascript',
'object',
]
var i = 1;
while(i <= myArr.length){
console.log(myArr[i])
i++;
}
// vòng lặp do...while
var i = 0;
var isSucces = false;
do{
i++;
console.log('nạp thẻ lần'+i);
if(true){
isSucces = true;
}
} while(!isSucces && i < 3);
// vòng lặp lồng nhau
var myArray = [
[1,2],//0
[3,4],//1
[5,6],//2
]
for(var i =0;i< myArray.length;i++){
for(var j =0;j< myArray[i].length;j++){
console.log(myArray[i],[j]);
}
}
// ==============ĐỆ QUY================
var array = ['a', 'b', 'c', 'd', 'a', 'a', 'c']
console.log([...(new Set(array))]);
// +++++++++++++++hàm đệ quy+++++++++++++++
// 1: xác định điểm dừng
// 2: logic handle ==> tạo ra điểm dừng
function deQuy(){
deQuy();
}
deQuy();
// vd:
function countDown(number){
if(number > 0){
console.log(number);
return countDown(number -1);
}
return number;
}
countDown(10);
// vd1
function loop( start, end, cb){
if(start <= end){
cb(start);
return loop( start+1, end, cb)
}
}
var array = ['javascript', 'PHP', 'Ruby'];
loop(0, array.length-1, function(index){
console.log(array[index]);
})
// vd2: tính giai thừa cách 1: vòng lặp
function giaiThua(number){
var output =1;
for(var i =number; i>0 ;i--){
output=output*i;
}
return output;
}
console.log(giaiThua(6));
// vd2: tính giai thừa cách 2: đệ quy
function giaiThua(number){
if(number > 0){
return number * giaiThua(number-1);
}
return 1;
}
console.log(giaiThua(6));
// ===============MẢNG 2===============
/**
* array
* forEach() duyệt qua từng phần tử của mảng
* every() kiểm tra tất cả p tử thỏa mãn điều kiệu nào đó
* some() kiểm tra xem phần tử có thoả mãn điều kiện không nếu có 1 ptử thỏa mãn thì trả về true
* fnd() tìm kiếm mong muốn kết quả trả về là 1 phần tử
* filter() tìm kiếm và trả về tất cả phần tử thỏa mãn
* map() muốn thay đổi 1 element trong 1 array
* reduce()
*/
// forEach()
var courses = [
{
id:1,
name: 'javascript',
coin:20,
},
{
id:2,
name: 'HTML, CSS',
coin:30,
},
{
id:3,
name: 'JSVALUE',
coin:70,
},
{
id:4,
name: 'Ruby',
coin:50,
},
{
id:5,
name: 'reactjs',
coin:90,
}
];
courses.forEach(function(course, index){
console.log(index,course);
});
// every()
var courses = [
{
id:1,
name: 'javascript',
coin:20,
},
{
id:2,
name: 'HTML, CSS',
coin:30,
},
{
id:3,
name: 'JSVALUE',
coin:70,
},
{
id:4,
name: 'Ruby',
coin:50,
},
{
id:5,
name: 'reactjs',
coin:90,
}
];
var isFree = courses.every(function(course, index){
console.log(index)
return course.coin === 0;
});
console.log(isFree);
// some()
var courses = [
{
id:1,
name: 'javascript',
coin:0,
},
{
id:2,
name: 'HTML, CSS',
coin:20,
},
{
id:3,
name: 'JSVALUE',
coin:0,
},
{
id:4,
name: 'Ruby',
coin:0,
},
{
id:5,
name: 'reactjs',
coin:90,
}
];
var isFree = courses.some(function(course, index){
return course.coin === 0;
});
console.log(isFree);
// fnd()
var courses = [
{
id:1,
name: 'javascript',
coin:0,
},
{
id:2,
name: 'HTML, CSS',
coin:20,
},
{
id:3,
name: 'JSVALUE',
coin:0,
},
{
id:4,
name: 'Ruby',
coin:0,
},
{
id:5,
name: 'reactjs',