JavaScript Array 可以扩展的几个方法
2009-09-21 09:29
453 查看
indexOf
返回元素在数组的索引,没有则返回-1。与string的indexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
lastIndexOf
与string的lastIndexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
forEach
各类库中都实现相似的each方法。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
every
如果数组中的每个元素都能通过给定的函数的测试,则返回true,反之false。换言之给定的函数也一定要返回true与false
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
some
类似every函数,但只要有一个通过给定函数的测试就返回true。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
filter
把符合条件的元素放到一个新数组中返回。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
map
让数组中的每一个元素调用给定的函数,然后把得到的结果放到新数组中返回。。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
reduce
让数组元素依次调用给定函数,最后返回一个值,换言之给定函数一定要用返回值。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
返回元素在数组的索引,没有则返回-1。与string的indexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.indexOf =
function
(el, start) {
var
start = start || 0;
for
(
var
i=0; i <
this
.length; ++i ) {
if
(
this
[i] === el ) {
return
i;
}
}
return
-1;
};
var
array = [2, 5, 9];
var
index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1
lastIndexOf
与string的lastIndexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.indexOf =
function
(el, start) {
var
start = start || 0;
for
(
var
i=0; i <
this
.length; ++i ) {
if
(
this
[i] === el ) {
return
i;
}
}
return
-1;
};
forEach
各类库中都实现相似的each方法。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.forEach =
function
(fn, thisObj) {
var
scope = thisObj || window;
for
(
var
i=0, j=
this
.length; i < j; ++i ) {
fn.call(scope,
this
[i], i,
this
);
}
};
function
printElt(element, index, array) {
print(
"["
+ index +
"] is "
+ element);
// assumes print is already defined
}
[2, 5, 9].forEach(printElt);
// Prints:
// [0] is 2
// [1] is 5
// [2] is 9
every
如果数组中的每个元素都能通过给定的函数的测试,则返回true,反之false。换言之给定的函数也一定要返回true与false
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.every =
function
(fn, thisObj) {
var
scope = thisObj || window;
for
(
var
i=0, j=
this
.length; i < j; ++i ) {
if
(!fn.call(scope,
this
[i], i,
this
) ) {
return
false
;
}
}
return
true
;
};
function
isBigEnough(element, index, array) {
return
(element <= 10);
}
var
passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed is false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true
some
类似every函数,但只要有一个通过给定函数的测试就返回true。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.some =
function
(fn, thisObj) {
var
scope = thisObj || window;
for
(
var
i=0, j=
this
.length; i < j; ++i ) {
if
(fn.call(scope,
this
[i], i,
this
) ) {
return
true
;
}
}
return
false
;
};
function
isBigEnough(element, index, array) {
return
(element >= 10);
}
var
passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
filter
把符合条件的元素放到一个新数组中返回。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.filter =
function
(fn, thisObj) {
var
scope = thisObj || window;
var
a = [];
for
(
var
i=0, j=
this
.length; i < j; ++i ) {
if
(!fn.call(scope,
this
[i], i,
this
) ) {
continue
;
}
a.push(
this
[i]);
}
return
a;
};
function
isBigEnough(element, index, array) {
return
(element <= 10);
}
var
filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
map
让数组中的每一个元素调用给定的函数,然后把得到的结果放到新数组中返回。。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.map =
function
(fn, thisObj) {
var
scope = thisObj || window;
var
a = [];
for
(
var
i=0, j=
this
.length; i < j; ++i ) {
a.push(fn.call(scope,
this
[i], i,
this
));
}
return
a;
};
var
numbers = [1, 4, 9];
var
roots = numbers.map(Math.sqrt);
// roots is now [1, 2, 3]
// numbers is still [1, 4, 9]
reduce
让数组元素依次调用给定函数,最后返回一个值,换言之给定函数一定要用返回值。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.reduce =
function
(fun
/*, initial*/
)
{
var
len =
this
.length >>> 0;
if
(
typeof
fun !=
"function"
)
throw
new
TypeError();
if
(len == 0 && arguments.length == 1)
throw
new
TypeError();
var
i = 0;
if
(arguments.length >= 2){
var
rv =arguments[1];
}
else
{
do
{
if
(i
in
this
){
rv =
this
[i++];
break
;
}
if
(++i >= len)
throw
new
TypeError();
}
while
(
true
);
}
for
(; i < len; i++){
if
(i
in
this
)
rv =fun.call(
null
, rv,
this
[i], i,
this
);
}
return
rv;
};
var
total = [0, 1, 2, 3].reduce(
function
(a, b){
return
a + b; });
// total == 6
相关文章推荐
- javascript的array数组几个常用的方法
- javascript给String类和Array扩展常用方法
- JavaScript 1.6 引入了几个新的Array (数组)方法
- JavaScript中Array 对象相关的几个方法
- javascript中数组Array对象调用不同的方法可以实现几种数据结构
- Javascript数组Array的forEach扩展方法
- JavaScript Array 对象扩展方法
- JavaScript中Array 对象相关的几个方法
- JavaScript中Array 对象相关的几个方法
- Javascript中Array的扩展方法
- JavaScript中Array 对象相关的几个方法
- Javascript有用的扩展方法— urldecode urlencode is_array in_array utf-8_encode trim base64_encode sprintf
- 在Javascript中对Array的一些方法扩展,实现常用的查询处理。
- Dojo 扩展 javascript 核心库 - 数组方法(Array)
- 为javascript中String扩展的几个方法
- 收集的几个javascript的date和array扩展
- JavaScript中Array 对象相关的几个方法
- JavaScript中Array 对象相关的几个方法
- JavaScript Array对象扩展indexOf()方法
- Core Javascript1.6的Array方法扩展