目录
当前位置: 首页 > 文档资料 > MooTools 中文文档 >

Array

优质
小牛编辑
117浏览
2023-12-01

Type: Array

Array方法和函数的集合。

另请参见:

MDC Array

Function: Array.each

用于遍历数组,或可迭代对象,如getElementsByTagName或函数的参数。

语法:

Array.each(iterable, fn[, bind]);

参数:

  1. iterable - (array)遍历的数组。
  2. fn - (function)处理每个元素的函数。
  3. bind - (object, optional)函数内可使用'this'作为该对象。欲了解更多信息,请参见:Function:bind

参数:fn

语法:
fn(item, index, object)
参数:
  1. item - (mixed) 数组中的当前项。
  2. index - (number) 数组中的当前项的索引。如果是一个对象它是当前项的键名,而不是索引。
  3. object - (mixed) 执行些方法的数组/对象。

示例:

Array.each(['Sun', 'Mon', 'Tue'], function(day, index){
    alert('name:' + day + ', index: ' + index);
}); // alerts 'name: Sun, index: 0', 'name: Mon, index: 1', etc.

另请参见:

Array:each

Function: Array.clone

返回数组的副本。

语法:

var clone = Array.clone(myArray);

参数:

  1. myArray - (array)你要复制的数组。

返回:

(array) 传入数组的副本。

示例:

var myArray = ['red', 'blue', 'green'];
var otherArray = Array.clone(myArray);
 
var myArray[0] = 'yellow';
 
alert(myArray[0]);      // alerts 'yellow'
alert(otherArray[0])    // alerts 'red'

Function: Array.from

将传入函数转化成一数组

语法:

var splatted = Array.from(obj);

参数:

  1. obj - (mixed) 任何类型的变量。

返回:

(array)如果传递的变量是一个数组,返回的数组。否则,返回一个仅包含传入变量的数组。

示例:

Array.from('hello'); // returns ['hello'].
Array.from(['a', 'b', 'c']); // returns ['a', 'b', 'c'].

Array method: each

在数组中的每个元素调用一个函数。

语法:

myArray.each(fn [bind]);

参数:

  1. fn - (function)此数组中的每一个元素都将执行此函数,并向函数传入当前元素和当前元素在数组中的索引.
  2. bind - (object, optional)将函数绑定在此对象上(在函数里可以用'this'代表此对象),详见Function:bind

参数:fn

语法

fn(item,index,array)

参数:

  1. item - (mixed)数组中的当前项。
  2. index - (number)数组中的当前项的索引。
  3. array - (array)传入数组

例子:

//Alerts "0 = apple", "1 = banana",等等
['apple', 'banana', 'lemon'].each(function(item, index){
alert(index + " = " + item);
}); //第二个参数可选,在这里没有使用

另请参见:

Array.each
MDC数组的forEach

注:

这种方法只适用于浏览器没有原生MDC数组的forEach支持。

Array method: invoke

返回一个数组,命名方法应用到数组的内容。

语法:

var arr = myArray.invoke(method[, arg, arg, arg ...])

参数:

  1. method - (string)此方法将应用到数组中的每一个项目。
  2. arg - (mixed)不限数目的方法传入到函数一对应的方法中。

返回:

  • (array)method方法处理过的新数组.

示例:

var foo = [4, 8, 15, 16, 23, 42];
var bar = foo.invoke('limit', 10, 30);  //bar is now [10, 10, 15, 16, 23, 30]

注:

被调用的方法是每一个元素的方法,如果方法不存在,那么将抛出一个错误。例如:

[0, false, 'string'].invoke('limit', 0, 10); // throws an error!

Array method: every

如果数组中的每个元素满足所提供的测试函数,则返回true,此方法仅适用于没有原生支持Array:every的浏览器。

语法:

var allPassed = myArray.every(fn[, bind]);

参数:

  1. fn - (function)测试每个元素的函数。
  2. bind - (object, optional)将函数绑定在此对象上(在函数里可以用'this'代表此对象),详见Function:bind

参数:fn

语法:

fn(item, index, array)
参数:
  1. item - (mixed)数组中的当前项。
  2. index - (number)数组中的当前项的索引。
  3. array - (array)传入数组。

返回:

  • (boolean)如果数组中的每个元素满足测试函数,则返回true。否则,返回false。

例子:

var areAllBigEnough = [10, 4, 25, 100].every(function(item, index){
    return item > 20;
}); // areAllBigEnough = false

另请参见:

Array method: filter

创建一个新的数组所有元素满足过滤函数返回true。此方法只提供给没有原生Array:filter支持的浏览器。

语法:

var filteredArray = myArray.filter(fn[, bind]);

参数:

  1. fn - (function)此函数测试数组的每一个元素,并向此函数传递每一项和此项的索引。
  2. bind - (object, optional)把函数绑定到此对象上(函数内部'this'代表到此对象),详见Function:bind

参数:fn

语法:
fn(item, index, array)
参数:
  • item - (mixed)数组中的当前项。
  • index - (number)数组中的当前项的索引。
  • array - (array)传入数组。

返回:

  • (array)的新的过滤阵。

例子:

var biggerThanTwenty = [10, 3, 25, 100].filter(function(item, index){
    return item > 20;
}); // biggerThanTwenty = [25, 100]

另请参见:

Array method: clean

创建一个新的数组,包含数组中所有被定义的元素(不为null或undefined)。

语法:

var cleanedArray = myArray.clean();

返回:

  • (array)过滤后的新数组

例子:

var myArray = [null, 1, 0, true, false, 'foo', undefined, ''];
myArray.clean() // returns [1, 0, true, false, 'foo', '']

Array method: indexOf

返回等于指定值的第一个元素的索引,返回-1如果没有发现,此方法只针对那些没有原生Array:indexOf方法的浏览器。

语法:

var index = myArray.indexOf(item[, from]);

返回:

  • (number)等于指定的第一个元素的索引。如果没有找到,则返回-1。

参数:

  1. item - (object)要搜索的项的数组中。
  2. from - (number, optional: defaults to 0)从哪个索引开始搜索。

例子:

['apple', 'lemon', 'banana'].indexOf('lemon'); // returns 1
['apple', 'lemon'].indexOf('banana'); // returns -1

另请参见:

Array method: map

创建一个新的数组,此数组包含处理函数的所有返回值,此方法仅适用于原生Array:map不支持的浏览器。

语法:

	fn(item, index, array)

参数:

  1. fn - (function)此函数用于为结果数组产生一新元素。
  2. bind - (object, optional)把函数绑定到此对象上(函数内部'this'代表到此对象),详见Function:bind

参数:fn

语法:
fn(item, index, array)
参数:
  1. item - (mixed)数组中的当前项。
  2. index - (number)数组中的当前项的索引。
  3. array - (array)传入数组。

返回:

  • (array)映射后的新数组。

例子:

var timesTwo = [1, 2, 3].map(function(item, index){
    return item * 2;
}); //timesTwo = [2, 4, 6];

另请参见:

Array method: some

返回true,如果在数组中的至少一种元素满足所提供的测试函数。此方法仅适用于原生Array:some不支持的浏览器。

语法:

var somePassed = myArray.some(fn[, bind]);

返回:

  • (boolean)如果数组中至少有一个元素满足测试函数返回true。否则,返回false。

参数:

  1. fn - (function)的功能测试中的每个元素。此功能是通过在数组中的项目和它的索引。
  2. bind - (object, optional)把函数绑定到此对象上(函数内部'this'代表到此对象),详见Function:bind

参数:fn

语法:
fn(item, index, array)
参数:
  1. item - (mixed)数组中的当前项。
  2. index - (number)数组中的当前项的索引。
  3. array - (array)传入的数组。

例子:

var isAnyBigEnough = [10, 4, 25, 100].some(function(item, index){
    return item > 20;
}); // isAnyBigEnough = true

另请参见:

Array method: associate

创建一个key-value对象,数组的当前内容为value,传入的数组为key。

语法:

var associated = myArray.associate(obj);

参数:

  1. obj - (array)作为新生成对象的键。

返回:

  • (object)新生成的key-value对象

例子:

var animals = ['Cow', 'Pig', 'Dog', 'Cat'];
var sounds = ['Moo', 'Oink', 'Woof', 'Miao'];
sounds.associate(animals);
// returns {'Cow': 'Moo', 'Pig': 'Oink', 'Dog': 'Woof', 'Cat': 'Miao'}

Array method: link

接受一个(Key:function)对象。

语法:

var result = myArray.link(object);

参数:

  1. object - (object)Key:function对象,作为返回对象的模板。

返回:

  • (object)返回关联对象。

例子:

var el = document.createElement('div');
var arr2 = [100, 'Hello', {foo: 'bar'}, el, false];
arr2.link({
    myNumber: Type.isNumber,
    myElement: Type.isElement,
    myObject: Type.isObject,
    myString: Type.isString,
    myBoolean: function(obj){ return obj != null; }
});
// returns {myNumber: 100, myElement: el, myObject: {foo: 'bar'}, myString: 'Hello', myBoolean: false}

Array method: contains

测试一个元素是否在此数组中

语法:

var inArray = myArray.contains(item[, from]);

参数:

  1. item - (object)要测试的元素。
  2. from - (number, optional: defaults to 0)从哪个索引开始测试,默认从0。

返回:

  • (boolean)如果数组包含指定的元素,则返回true,否则返回false。

例子:

['a', 'b', 'c'].contains('a'); // returns true
['a', 'b', 'c'].contains('d'); // returns false

另请参见:

Array method: append

追加传递的数组在当前数组的最后。

语法:

var myArray = myArray.append(otherArray);

参数:

  1. otherArray - (array)要追加的数组。

返回:

  • (array)追加后的新数组。

例子:

var myOtherArray = ['green', 'yellow'];
['red', 'blue'].append(myOtherArray); // returns ['red', 'blue', 'green', 'yellow'];
 
[0, 1, 2].append([3, [4]]); // [0, 1, 2, 3, [4]]

Array method: getLast

返回从数组中的最后一个项目。

语法:

myArray.getLast();

返回:

  • (mixed)这个数组中的最后一项。
  • (null)如果该数组为空,则返回null。

例子:

['Cow', 'Pig', 'Dog', 'Cat'].getLast(); // returns 'Cat'

Array method: getRandom

从数组中返回一个随机项。

语法:

myArray.getRandom();

返回:

  • (mixed)随机从这个数组中返回一项。如果这个数组为空,则返回null。

例子:

['Cow', 'Pig', 'Dog', 'Cat'].getRandom(); // returns one of the items

Array method: include

push一个元素,如果它在数组中不存在(大小写类型敏感)。

语法:

myArray.include(item);

参数:

  1. item - (object)要增加的元素。

返回:

  • (array)包含新元素的数组。

例子:

['Cow', 'Pig', 'Dog'].include('Cat'); // returns ['Cow', 'Pig', 'Dog', 'Cat']
['Cow', 'Pig', 'Dog'].include('Dog'); // returns ['Cow', 'Pig', 'Dog']

注:

如果你想push一个元素即使它已经存在使用原生Javascript:

myArray.push(item);

Array method: combine

联合两个数组,不允许重复,大小写类型敏感。

语法:

myArray.combine(array);

参数:

  1. array - (array)需要联合的数组。

返回:

  • (array)联合后的新数组。

例子:

var animals = ['Cow', 'Pig', 'Dog'];
animals.combine(['Cat', 'Dog']); //animals = ['Cow', 'Pig', 'Dog', 'Cat'];

Array method: erase

从数组中删除一个或多个相同项。

语法:

myArray.erase(item);

参数:

  1. item - (object)要删除的项。

返回:

  • (array)删除指定项后的数组。

例子:

['Cow', 'Pig', 'Dog', 'Cat', 'Dog'].erase('Dog') // returns ['Cow', 'Pig', 'Cat']
['Cow', 'Pig', 'Dog'].erase('Cat') // returns ['Cow', 'Pig', 'Dog']

Array method: empty

清空一个数组。

语法:

myArray.empty();

返回:

  • (array)返回清空后的数组。

例子:

var myArray = ['old', 'data'];
myArray.empty(); //myArray is now []

Array method: flatten

转换一个多维数组到一维数组。

语法:

myArray.flatten();

返回:

  • (array)转换后的一维数组。

例子:

var myArray = [1,2,3,[4,5, [6,7]], [[[8]]]];
var newArray = myArray.flatten(); //newArray is [1,2,3,4,5,6,7,8]

Array method: pick

返回数组中第一个已定义的元素,或返回null。

语法:

var picked = [var1, var2, var3].pick();

返回:

  • (mixed)第一个已定义的元素。
  • (null)如果所有元素是null或undefined,则返回null。

示例:

function say(infoMessage, errorMessage){
    alert([errorMessage, infoMessage, 'There was no message supplied.'].pick());
 
    //or more MooTools 1.2 style using Generics
    Array.pick([errorMessage, infoMessage, 'There was no message supplied.']);
 
}
say(); // alerts 'There was no message supplied.'
say('This is an info message.'); // alerts 'This is an info message.'
say('This message will be ignored.', 'This is the error message.'); // alerts 'This is the error message.'

注:

这是相当于MooTools 1.2的$pick。

Array method: hexToRgb

转换为十六进制的颜色到RGB。输入数组必须是以下格式十六进制的颜色:['FF','FF','FF']

语法:

myArray.hexToRgb([array]);

参数:

  1. array - (boolean, optional)如果为true,将输出一个数组(e.g.[255,51,0]),否则输出一个字符串(e.g."rgb(255, 51, 0)")。

返回:

  • (string)字符串,rgb格式的颜色。
  • (array)如果传入参数为true,将返回一个数组。

例子:

['11', '22', '33'].hexToRgb(); // returns 'rgb(17, 34, 51)'
['11', '22', '33'].hexToRgb(true); // returns [17, 34, 51]

另请参见:

Array method: rgbToHex

转换rgb格式到十六进制格式。输入的rgb必须是以下格式:[255, 255, 255]或[255, 255, 255, 1].

语法:

myArray.rgbToHex([array]);

参数:

  1. array - (boolean, optional)如果传入true,将输出一个数组(e.g.['FF','33','00']),否则返回一个string(e.g. '#ff3300')。

返回:

  • (string)一个十六进制的颜色,或'transparent'如果rgba的第四个值是0。
  • (array)如查输入参数为真,则返回一数组。

例子:

[17, 34, 51].rgbToHex(); // returns '#112233'
[17, 34, 51].rgbToHex(true); // returns ['11', '22', '33']
[17, 34, 51, 0].rgbToHex(); // returns 'transparent'

另请参见: