发新话题
打印

用 avascript 写的一个映射表类

用 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



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题