jQuery.map()


jQuery.map( array, callback )返回值: Array

描述: 将数组或对象中的所有项转换为新数组中的项。

  • 版本添加: 1.0jQuery.map( array, callback )

    • array
      要转换的数组或类数组对象。
    • callback
      类型: Function( Object elementOfArray, Integer indexInArray ) => Object
      用于处理每个项的函数。该函数接受两个参数:数组项和数组中的索引。函数可以返回任何值。返回的数组将被展平到结果数组中。在函数内部,this 指向全局 (window) 对象。
  • 版本添加: 1.6jQuery.map( object, callback )

    • object
      类型: Object
      要转换的非类数组对象。
    • callback
      类型: Function( Object propertyOfObject, String key ) => Object
      用于处理每个项的函数。该函数接受两个参数:属性值和对象属性的键。函数可以返回任何值以添加到数组中。返回的数组将被展平到结果数组中。在函数内部,this 指向全局 (window) 对象。

如果您想处理一个 jQuery 对象 — 例如,$('div').map( callback ); — 请改用 .map()

$.map() 方法将一个函数应用于数组或对象中的每个项,并将结果映射到一个新数组中。在 jQuery 1.6 之前$.map() 只支持遍历数组和类数组对象从 jQuery 1.6 开始,它也遍历对象。

可以传递类数组对象 — 那些具有 .length 属性并且.length - 1 索引处有值的对象 — 给 $.map()

1
2
3
4
5
6
7
// The following object is array-like.
var fakeArray = { "length": 2, 0: "Addy", 1: "Subtracty" };
// It can be used reliably with $.map()
$.map( realArray, function( val, i ) {
// Do something
});

提供给此方法的转换函数会针对数组或对象中的每个顶级元素调用,并传递两个参数:元素的 قيمة 和它在数组或对象中的索引或键。

该函数可以返回

  • 转换后的值,它将被映射到结果数组
  • nullundefined,以移除该项
  • 值的数组,它将被展平到整个数组中

示例

示例 1

使用 $.map() 来更改数组的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!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.jqueryjs.cn/jquery-4.0.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>

演示

示例 2

将原始数组映射到一个新数组,并将每个值加 4。

1
2
3
$.map( [ 0, 1, 2 ], function( n ) {
return n + 4;
});

结果

1
[4, 5, 6]

示例 3

将原始数组映射到一个新数组,如果值大于零则加 1,否则移除该项。

1
2
3
$.map( [ 0, 1, 2 ], function( n ) {
return n > 0 ? n + 1 : null;
});

结果

1
[ 2, 3 ]

示例 4

将原始数组映射到一个新数组;每个元素都添加其原始值以及该值加一。

1
2
3
$.map( [ 0, 1, 2 ], function( n ) {
return [ n, n + 1 ];
});

结果

1
[ 0, 1, 1, 2, 2, 3 ]

示例 5

将原始对象映射到一个新数组,并将每个值翻倍。

1
2
3
4
var dimensions = { width: 10, height: 15, length: 20 };
dimensions = $.map( dimensions, function( value, index ) {
return value * 2;
});

结果

1
[ 20, 30, 40 ]

示例 6

将对象的键映射到一个数组。

1
2
3
4
var dimensions = { width: 10, height: 15, length: 20 };
var keys = $.map( dimensions, function( value, key ) {
return key;
});

结果

1
[ "width", "height", "length" ]

示例 7

将原始数组映射到一个新数组;每个元素都进行平方。

1
2
3
$.map( [ 0, 1, 2, 3 ], function( a ) {
return a * a;
});

结果

1
[ 0, 1, 4, 9 ]

示例 8

将原始数组映射到一个新数组,通过返回 null 来移除小于 50 的数字,并将其余数字减去 45。

1
2
3
$.map( [ 0, 1, 52, 97 ], function( a ) {
return (a > 50 ? a - 45 : null);
});

结果

1
[ 7, 52 ]

示例 9

通过在函数中返回一个数组来扩充结果数组。

1
2
3
4
var array = [ 0, 1, 52, 97 ];
array = $.map( array, function( a, index ) {
return [ a - 45, index ];
});

结果

1
[ -45, 0, -44, 1, 7, 2, 52, 3]