services/sync/tps/extensions/mozmill/resource/stdlib/arrays.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:1d269c75ccad
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, you can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 var EXPORTED_SYMBOLS = ['inArray', 'getSet', 'indexOf',
6 'remove', 'rindexOf', 'compare'];
7
8
9 function remove(array, from, to) {
10 var rest = array.slice((to || from) + 1 || array.length);
11 array.length = from < 0 ? array.length + from : from;
12
13 return array.push.apply(array, rest);
14 }
15
16 function inArray(array, value) {
17 for (var i in array) {
18 if (value == array[i]) {
19 return true;
20 }
21 }
22
23 return false;
24 }
25
26 function getSet(array) {
27 var narray = [];
28
29 for (var i in array) {
30 if (!inArray(narray, array[i])) {
31 narray.push(array[i]);
32 }
33 }
34
35 return narray;
36 }
37
38 function indexOf(array, v, offset) {
39 for (var i in array) {
40 if (offset == undefined || i >= offset) {
41 if (!isNaN(i) && array[i] == v) {
42 return new Number(i);
43 }
44 }
45 }
46
47 return -1;
48 }
49
50 function rindexOf (array, v) {
51 var l = array.length;
52
53 for (var i in array) {
54 if (!isNaN(i)) {
55 var i = new Number(i);
56 }
57
58 if (!isNaN(i) && array[l - i] == v) {
59 return l - i;
60 }
61 }
62
63 return -1;
64 }
65
66 function compare (array, carray) {
67 if (array.length != carray.length) {
68 return false;
69 }
70
71 for (var i in array) {
72 if (array[i] != carray[i]) {
73 return false;
74 }
75 }
76
77 return true;
78 }

mercurial