如果您希望处理一个 jQuery 对象——例如,$('div').map( callback );
——请改用.map()。
$.map()
方法将函数应用于数组或对象中的每个项目,并将结果映射到新数组中。在 jQuery 1.6 之前,$.map()
支持遍历arrays only
.从 jQuery 1.6 开始它还遍历对象。
Array-like 对象 — 具有 .length
属性 and
在 .length - 1
索引上的值的对象 — 在传递给 $.map()
之前必须转换为实际数组。 jQuery 库为此类转换提供了$.makeArray()。
var fakeArray = { "length": 2, 0: "Addy", 1: "Subtracty" };
var realArray = $.makeArray( fakeArray )
$.map( realArray, function( val, i ) {
});
|
为数组或对象中的每个顶级元素调用提供给此方法的转换函数,并传递两个参数:元素的值及其在数组或对象中的索引或键。
该函数可以返回:
- 翻译后的值,将映射到结果数组
null
或 undefined
,删除项目
- 一组值,将被展平为完整的数组
使用 $.map() 更改数组的值。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery.map demo</title>
<style>
div {
color: blue;
}
p {
color: green;
margin: 0;
}
span {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<div></div>
<p></p>
<span></span>
<script>
var arr = [ "a", "b", "c", "d", "e" ];
$( "div" ).text( arr.join( ", " ) );
arr = jQuery.map( arr, function( n, i ) {
return ( n.toUpperCase() + i );
});
$( "p" ).text( arr.join( ", " ) );
arr = jQuery.map( arr, function( a ) {
return a + a;
});
$( "span" ).text( arr.join( ", " ) );
</script>
</body>
</html>
|
演示:
将原始数组映射到一个新数组,并将每个值加 4。
$.map( [ 0, 1, 2 ], function( n ) {
return n + 4;
});
|
结果:
将原始数组映射到一个新数组,如果每个值大于零,则将其加 1,否则将其删除。
$.map( [ 0, 1, 2 ], function( n ) {
return n > 0 ? n + 1 : null;
});
|
结果:
将原始数组映射到新数组;每个元素都加上它的原始值和加一的值。
$.map( [ 0, 1, 2 ], function( n ) {
return [ n, n + 1 ];
});
|
结果:
将原始对象映射到新数组并将每个值加倍。
var dimensions = { width: 10, height: 15, length: 20 };
dimensions = $.map( dimensions, function( value, index ) {
return value * 2;
});
|
结果:
将对象的键映射到数组。
var dimensions = { width: 10, height: 15, length: 20 };
var keys = $.map( dimensions, function( value, key ) {
return key;
});
|
结果:
[ "width", "height", "length" ]
|
将原始数组映射到新数组;每个元素都是平方的。
$.map( [ 0, 1, 2, 3 ], function( a ) {
return a * a;
});
|
结果:
将原始数组映射到新数组,通过返回 null
并从其余部分中减去 45 来删除小于 50 的数字。
$.map( [ 0, 1, 52, 97 ], function( a ) {
return (a > 50 ? a - 45 : null);
});
|
结果:
通过在函数内返回一个数组来扩充结果数组。
var array = [ 0, 1, 52, 97 ];
array = $.map( array, function( a, index ) {
return [ a - 45, index ];
});
|
结果:
[ -45, 0, -44, 1, 7, 2, 52, 3]
|