用 avascript 写的一个映射表类
该类可以通过关键字(key)查找相对应的值(value),关键字的类型可以是String、Number、Boolean类型,值的类型不限,代码如下: 9 u2 E9 a/ F# ]( S3 Q* l+ q9 A
a2 t* L3 V6 t% Y2 d7 R1 k
运行代码框! b4 e: r! @) b, }- M2 D
script
& z+ V7 Q! ?3 c' P% u' F+ _6 e7 j. c2 W5 q3 g9 u
function struct(key, value){% ?7 J- \& M/ L& J1 i% `* a8 K
& K" m9 C$ e4 W0 o" ?' V4 X
1 A m$ d6 d9 p1 G& t8 }. ^" J' z8 @+ k) ?8 a- M
this.key = key;% |2 n2 P+ a" g' S/ I. B' h
8 @% k7 T, R, u$ B e this.value = value;
6 j2 n8 }/ k9 b3 I5 y% F9 w9 v2 Y. Q0 \! a0 t
* |) F! y, C9 `, v7 C0 K: W+ Y/ z% {
# X" |" W- E0 @+ ?1 f# ^}0 d9 B3 P( c! ]
% c* Q2 R. q; b2 T1 B' B7 { c& A, c9 ?- K+ @' T
B4 z9 n& B2 i0 Mfunction setAt(key, value){# z8 W6 ]) z( {6 `9 {
5 A% A. ]: ~* {$ y1 e! ^" _( a
* L9 h' ~, N& Z [
/ b6 a% Q6 p s4 Q for (var i = 0; i this.map.length; i )
' M" j8 }4 U2 C$ v5 Y! a* s$ C2 M8 A6 P- l S
{5 Q. O# C- k. g
: S& Q% S$ Y( I' y+ x5 h if ( this.map.key === key )! r9 M( e+ C% L/ L
4 ^# r. x! V& G2 g+ z9 b$ I {
4 W3 ~: P! \2 G; M" `. q, b$ f( b
) n' n$ L, \$ [- ?; i6 I this.map.value = value;* H2 i$ a0 g5 A2 v
) @. G5 X: \ O) v }4 i return;
2 ^' T& O) Z( n6 n$ l3 ~, M) P ]) y, X l% b/ }' [: F
}
* m/ ^% N( ?6 W4 H0 N7 s
' y$ C. w- ]7 k# U9 n7 g }3 C, Q4 F: n* _) ^2 R$ }: K7 O
4 E% ?2 C' e/ }1 g# \; ]; e
$ c7 ^9 s7 O0 V7 f
% x/ X1 ? M0 I6 b q/ P2 p this.map[this.map.length] = new struct(key, value); n6 [# ]* [- c- n0 Q J" f
& D6 V: x8 G, d( b" v+ q; |/ T; ]% R7 ?( i
( i6 J# {2 S- P1 j$ X( R% u( e
}
& N# \/ @4 B; x' @" Q5 @6 W; d P5 h2 q/ o+ y/ z
) A4 E+ w. q9 s$ I9 e; Z0 n) b5 X& A/ w
function lookUp(key)# h5 v. u4 f) i+ A
5 _- j2 f& M# r8 I
{
- U( w, o* w5 }, o. e: r Z% h; I+ V- g9 [: J M+ `2 q
for (var i = 0; i this.map.length; i )1 L" v w6 }3 ?8 r* A9 j/ u8 a
; Y6 C( `. k* v, b; Z8 R8 \ A {: }) I5 j8 b6 t* n$ k. h
, I! J) q, ?) k! ? if ( this.map.key === key )/ E- d, M9 T D2 w6 V5 [3 d+ t
2 m! u+ b! T. q% r2 J1 j, n, {
{8 H. |% c9 J2 V2 Q3 Y
0 C9 m: M3 I6 P! o7 g9 U% D2 n return this.map.value;* b; c% i& [- O" y6 f
8 X6 U/ P& G. B4 y; p0 ` }8 x7 T3 W6 d0 d- {6 v* U" x3 q
) z+ C: E7 @6 B9 R% `' }6 d }
( d& ^1 m9 g6 S- C
* T! @0 P! G3 A 2 X. K$ E& C& D: J2 ?
& k# Y# R F; r7 w/ |
return null;
" }- y% o: n* k. W& g$ t) d
/ r/ u! D; Y$ i$ Y# Y}
`$ U5 R' h: T; k0 s
0 D) E# {; N8 n9 a- V3 }
. ~' R* j/ Z$ Z/ w5 _; c2 U# V7 W6 B) D; V8 _
function removeKey(key)1 j( ^: ]. c& [5 E7 Y
! p+ y* L2 i1 t{3 f$ A9 F0 y+ v6 r/ A
/ V7 m" G& V7 f a( ]9 E
var v;
% \9 e1 E) e" w4 ^
& O, ~6 l( K4 Q4 j2 r2 q( V for (var i = 0; i this.map.length; i )3 _8 O# W0 q; t: w! j, N* N' e6 S: Z
; }' w: G; W+ l/ ~; Q) r, M9 g
{
+ [2 f- w4 i$ n% G/ C5 _( p M6 l" e* _1 y+ n5 G9 P
v = this.map.pop();* _( H7 \2 }/ B# F! J1 [
- b4 }: P" j- d3 I8 s if ( v.key === key )
* g# F( Q8 v4 Q" D' q' O \* L2 ]/ G$ G* j- C! l4 S+ z% j7 _
continue;
& x2 Z" G6 r$ X: _" w5 E8 H
: z6 R- i' ^, B: T$ ]8 m& M' Y . y" U, x: V2 K/ x" q
8 k8 l$ w( i/ ?. g this.map.unshift(v);
0 G7 ?, M/ ]& o. i" ^; X' O/ s- S7 ]6 {) J/ o
}
' v5 L, y; U' k0 Y' [% I% w# r
) C7 ~6 L+ @1 I, D& I}- `) }2 R3 O" h5 ^+ W- h
) M, \( u; l/ t: ^" N4 @8 O0 {
7 E$ a4 p% H2 d- Q
( R: p: F4 Z9 w: i, @% U9 ifunction getCount(){
- s: ?- T7 p3 y3 |% X3 v5 q, V" }0 D2 e4 A& j
return this.map.length;- d# r7 H$ n' |: X7 g) P
$ |' ]. a* u8 c, |1 Q4 ]2 I/ K* O \ A& d
}
# H! r* E0 O P/ w% E8 U% l% @) D' \1 M
0 B0 k5 K6 ~# l' M! u) }; i
* w, U3 A% J: B2 K' ^
function isEmpty(){9 ^( R+ h# Z' l; ~$ N: @: C+ {/ D
; \& b2 ]- A& h5 m1 r" g( | return this.map.length = 0;
9 D0 P$ O% ?! c7 S3 S3 m& h; B- U5 \( v8 x3 D
}2 i3 C5 e9 Y% p* ~/ R
2 a1 |- f. r6 g5 s- U) E8 |0 `6 D0 `3 G1 H1 ^3 T: Q- |
$ A! n# |2 o) {& I( m$ I3 zfunction classMap() {
. G9 G4 E3 s0 K5 V# G( T9 A
: H. f$ ^4 ~+ J2 d
0 s. p+ P9 X9 i- X: A
) ]5 m! R' Q q6 A this.map = new Array();) D2 @6 \/ c1 t, V& O: u
2 u. f4 s. v) K+ M9 P2 X
$ c2 l# v7 L) U5 S
' T% Q: Y/ Q' z+ A$ w. s5 u* i this.lookUp = lookUp;
+ d* `4 x$ W3 i; n8 W$ z4 ?" H& \' R3 b( ?0 V9 X" X O
this.setAt = setAt;
* X$ c" G7 a; t# K& @
2 `6 j& e0 e( o- b4 ` this.removeKey = removeKey;- ]/ b c! p) l, n6 M8 \& r
9 P6 _$ a" |2 y5 D* a4 v this.getCount = getCount;
( N) O4 V! l! l" F
9 ?. P! o) o I: k. q7 \" U this.isEmpty = isEmpty;+ E; G8 N0 w* U3 i
( n/ ?- y& [" d7 P2 m. e" S
}& z& i" x4 \1 C. o# v
. O& W' u# _1 n/ _$ ?3 Z b
8 p2 e6 `6 B N. v
2 W4 m% Q2 }$ y) {7 `window.onload = function(){
- { t* Z7 a7 z1 i7 ^! x& ?' i( l, C; k. H1 t$ I$ j0 q+ R
2 n- c( m6 n, `5 X) d5 U4 i
H& s) q: ?. U var map = new classMap();# D0 a0 P# D$ x- v+ M- n' d
5 d! v0 F! c5 Z" K6 n
! \" d' X6 _- W7 j
2 a! B& A7 V& o& b alert("is the map empty? " map.isEmpty());
* G7 @, ~6 I% g. w) X; b$ K# O8 N! B# t
, `: a0 X; x M7 o$ _/ c; z V
1 f8 d7 u; j1 t
// string to array- m/ H1 E" {0 J; _$ e
2 k8 ~5 ~" ^9 s# h* T: G. e( \/ @ map.setAt("sw1", new Array("sw1_1"));) p2 V0 p* E& n3 X- V \
, O6 f* J; ]( J2 D map.setAt("sw2", new Array("sw2_1", "sw2_2"));
- A" c! F7 P# {2 K% o8 n# V
1 }. B- {9 k/ Z map.setAt("sw3", new Array("sw3_1", "sw3_2", "sw3_3"));
% ]2 l0 ?# t4 |/ X- w1 q4 ~4 `$ v2 X- m. T9 j8 P% O9 R
alert(map.lookUp("sw5")); // null
7 n( M3 `& i) h+ v, i: R& }
; n+ \! d i e2 s5 P. U alert(map.lookUp("sw2")); // "sw2_1, sw2_2"
- m1 K, P" N$ A4 }. f' Q
; L+ u+ `0 }" H3 f1 x3 i8 ] w" H : M# v) t5 p) w( I
" Z; u8 i+ M! j3 V. q' a7 O6 N alert(map.getCount()); // 3$ g" D4 @* d4 r n8 s+ J! V* a; k
& m1 M Z& k" `8 v% c% Z
* a _& B8 I+ x' G
5 h3 |* [% k4 g. C, f2 I( d // number to string
: N' `) ]1 u& u& l5 ~5 P8 k8 ^2 k+ m( N' z: E* u, B4 s6 J4 `
map.setAt(1, "sw1");
+ K5 p8 s0 E' z: ]- |9 k2 ]/ c3 U2 a' B S. U
map.setAt(2, "sw2");
C0 O0 x$ I, f$ y
. y. Y- p5 `( |( T5 e. E$ N alert(map.lookUp(2)); // "sw2"
3 T4 y, D. U3 \1 |* G
2 U/ j. S$ [# F! k* n( t3 ~ map.setAt(2, new Array("sw2_1", "sw2_2")); `% S: y; J5 W P( @
: D5 C! r# p6 f; U
alert(map.lookUp(2)); // "sw2_1, sw2_2"' S" V- x4 i, X. O- g* S% C& C
! N' W0 M. e/ }* U6 U
9 {, T1 E, q3 S. J& T) M3 p/ S$ k
! K1 A1 E. S! n W$ J V4 ^ alert(map.getCount()); // 5! q, m' k6 y) ]9 z- }7 L& `
2 ~ ^2 u; B) u
$ f+ K' z& B: ^# y" b! F9 B0 V* @' F) a G. \. P
// string to number/ D& F1 a5 m1 x6 y( ]" R
. C/ [7 }4 X% k- q6 f% N
map.setAt("1", 1);. u: w( m' H. q6 i( E9 y; B, C
" _) \" S) }' @: p* }$ a
map.setAt("2", 2);
; ?$ p2 c( G* C5 v# h% q
( {, l9 f2 W( Z4 `; ^0 C9 m9 Y alert(map.lookUp("1")); // 1( y" J7 R) _/ j4 u% n+ ]
4 l. H! _9 l6 N
alert(map.lookUp(1)); // "sw1"9 N! U# J7 [4 @: N% b8 ^! w: b
( T. ]$ Q9 b9 @7 z' v, o8 E3 E) b
map.setAt("sw3", 33);
2 t4 P/ h5 z* e0 a7 n% t$ W5 b- E. y: `" ^
alert(map.lookUp("sw3")); // 33; D' A, }3 d& N2 B& g8 U/ O3 h8 m
" F% G$ j& O! i* Q( j7 `* I( M
3 T4 f J5 `) P. t1 V) z- ]; R. D( E
alert(map.getCount()); // 7& G r2 }' G5 B% l
6 H9 @$ R; ]; X0 l6 k1 k
& t& m. I1 g3 X+ [# @( L& q
' w; u( y$ m/ V7 `( L4 M& S! P/ Y // number to number
0 h. T: P: o# F' E7 r& H: t9 H- B0 O' e" l% q3 ]
map.setAt(1, 11);
, H$ l. }8 a3 l' v, H, B( _7 V D2 D: o& i
map.setAt(2, 22);1 x; _! j: P9 A
' g& [3 q# X1 R4 V) W) M alert(map.lookUp(1)); // 11
1 n. z5 W3 |0 u0 _7 i# Y& J3 R I/ z5 ~: ` k9 H8 i4 `
$ \( A" i- @7 M( D3 r1 `: w
7 O% y. J: x7 M+ B; | alert(map.getCount()); // 7
! u& V% f( l" F" |9 g- w& M6 f- T# C0 Y2 O5 O7 W/ M- K) o: e c
, G4 F/ s: C; d% A, j5 O b/ G; U
- S; C$ V8 d6 L; c0 i/ U# q map.removeKey(1);& l$ \. M* v" S, I; q1 Q
3 W1 q' a( r& o alert(map.lookUp(1)); // null
$ H/ e6 x9 L# y3 S# i! {; |- n/ L* i
$ z. q8 w/ d1 t! ?9 S& Y" R
3 e* I3 G3 \+ Y- D
alert(map.getCount()); // 67 C- D. d0 [ l1 N& R6 V9 I3 @! Q
- D/ b$ Y/ n1 r: Y1 I9 c% ` ) Y. j7 `/ R% W+ S9 P7 W6 p, \
! R7 k7 [/ d+ f! x
// boolean to array- ^ A. e m0 o
' Q( _. b4 b) L/ D" ~ map.setAt(false, new Array("false", "true"));
( b7 M/ A% s# g5 d+ ^. m7 Y! C8 L4 I2 q6 |; G4 }+ M% `9 i; I2 Z
alert(map.lookUp(false));
6 l' w0 p$ ^# ]$ N& A6 p% H$ p3 o0 r4 }! j/ A1 Y* Y9 }
5 M9 k$ Z8 y& f1 r1 ~# h
4 B! _# [# A- y alert(map.getCount()); // 7# J, c! d R8 y& ?9 e0 c
+ T7 v3 `! h& G) M
" E5 a3 P& f, l- x6 \) ~- C% z. Z" E
}
0 E" `. t5 E6 u# i6 s4 e- V7 `+ J! |7 S
/script
点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹