按字母顺序整理html
索引数组
concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回.
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
valueN
新的 Array
实例。
concat 方法将建立一个新的数组,而后将调用它的对象(this 指向的对象)中的元素以及全部参数中的数组类型的参数中的元素以及非数组类型的参数自己按照顺序放入这个新数组,并返回该数组.
concat
方法并不修改调用它的对象(this
指向的对象) 和参数中的各个数组自己的值,而是将他们的每一个元素拷贝一份放在组合成的新数组中.原数组中的元素有两种被拷贝的方式:
concat
方法会复制对象引用放到组合的新数组里,原数组和新数组中的对象引用都指向同一个实际的对象,因此,当实际的对象被修改时,两个数组也同时会被修改.注意: 链接一个或多个数组(值)将不会改变本来的数组/值。进一步说,任何对新数组的操做都不会对原有的数组形成影响(仅当该元素不是对象的引用时),反之亦然。
filter()
方法使用指定的函数测试全部元素,并建立一个包含全部经过测试的元素的新数组。
var new_arrary = arr.filter(callback[, thisArg])
callback
thisArg
callback
时的用于 this
的值。
filter
为数组中的每一个元素调用一次 callback
函数,并利用全部使得 callback
返回 true 或 等价于 true 的值 的元素建立一个新数组。callback
只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有经过 callback
测试的元素会被跳过,不会被包含在新数组中。
callback
被调用时传入三个参数:
若是为 filter
提供一个 thisArg
参数,则它会被做为 callback
被调用时的 this
值。不然,callback
的 this
值在非严格模式下将是全局对象,严格模式下为 undefined
。
The this
value ultimately observable by callback
is determined according to the usual rules for determining thethis
seen by a function.
filter
不会改变原数组。
filter
遍历的元素范围在第一次调用 callback
以前就已经肯定了。在调用 filter
以后被添加到数组中的元素不会被 filter
遍历到。若是已经存在的元素被改变了,则他们传入 callback
的值是 filter
遍历到它们那一刻的值。被删除或历来未被赋值的元素不会被遍历到。
indexOf()方法
返回给定元素能找在数组中找到的第一个索引值,不然返回-1。
arr.indexOf(searchElement[, fromIndex = 0])
searchElement
fromIndex
indexOf
使用strict equality (不管是 ===, 仍是 triple-equals操做符都基于一样的方法)进行判断 searchElement与
数组中包含的元素之间的关系。
join()
方法将数组中的全部元素链接成一个字符串。
str = arr.join([separator = ','])
separator
seprator
是一个空字符串,那么数组中的全部元素将被直接链接。
全部的数组元素被转换成字符串,再用一个分隔符将这些字符串链接起来。若是元素是undefined 或者null, 则会转化成空字符串。
map()
方法返回一个由原数组中的每一个元素调用一个指定方法后的返回值组成的新数组。
array.map(callback[, thisArg])
callback
currentValue
callback
的第一个参数,数组中当前被传递的元素。
index
callback
的第二个参数,数组中当前被传递的元素的索引。
array
callback
的第三个参数,调用 map
方法的数组。
thisArg
callback
函数时 this
指向的对象。
map
方法会给原数组中的每一个元素都按顺序调用一次 callback
函数。callback
每次执行后的返回值组合起来造成一个新数组。 callback
函数只会在有值的索引上被调用;那些历来没被赋过值或者使用 delete
删除的索引则不会被调用。
callback
函数会被自动传入三个参数:数组元素,元素索引,原数组自己。
若是 thisArg
参数有值,则每次 callback
函数被调用的时候,this
都会指向 thisArg
参数上的这个对象。若是省略了 thisArg
参数,
或者赋值为 null
或 undefined
,则 this 指向全局对象 。
map
不修改调用它的原数组自己(固然能够在 callback
执行时改变原数组)。
使用 map 方法处理数组时,数组元素的范围是在 callback 方法第一次调用以前就已经肯定了。在 map 方法执行的过程当中:原数组中新增长的元素将不会被 callback 访问到;若已经存在的元素被改变或删除了,则它们的传递到 callback 的值是 map 方法遍历到它们的那一时刻的值;而被删除的元素将不会被访问到。
pop()
方法删除一个数组中的最后的一个元素,而且返回这个元素。
array.pop()
pop
方法删除一个数组中的最后一个元素,而且把这个删除掉的元素返回给调用者。
pop
被有意设计成具备通用性,该方法能够经过 call
或 apply
方法应用于一个类数组(array-like)对象上。
push()
方法添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。
arr.push(element1, ..., elementN)
elementN
当调用该方法时,新的 length
属性值将被返回。
push
方法把值添加到数组中。
push
方法有意具备通用性。该方法和 call()
或 apply()
一块儿使用时,可应用在相似数组的对象上。push
方法根据 length
属性来决定从哪里开始插入给定的值。若是 length
不能被转成一个数值,则插入的元素索引为 0,包括 length
不存在时。当 length
不存在时,将会建立它。
惟一的原生类数组(array-like)对象是 Strings
,尽管如此,它们并不适用该方法,由于字符串是不可改变的。
reduce()
方法接收一个函数做为累加器(accumulator),数组中的每一个值(从左到右)开始合并,最终为一个值。
arr.reduce(callback,[initialValue])
callback
执行数组中每一个值的函数,包含四个参数
previousValue
currentValue
index
array
reduce
的数组
initialValue
reduce
为数组中的每个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce
的数组。
回调函数第一次执行时,previousValue
和 currentValue
的取值有两种状况,若是 initialValue 在调用 reduce 时被提供,那么第一个 previousValue 等于 initialValue ,而且currentValue 等于数组中的第一个值;若是initialValue 未被提供,那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。
若是数组为空而且没有提供initialValue, 会抛出TypeError
。若是数组仅有一个元素(不管位置如何)而且没有提供initialValue, 或者有提供initialValue可是数组为空,那么此惟一值将被返回而且callback不会被执行。
reverse()
方法颠倒数组中元素的位置。第一个元素会成为最后一个,最后一个会成为第一个。
arr.reverse()
无
reverse
方法颠倒数组中元素的位置,并返回该数组的引用。
shift()
方法删除数组的 第一个 元素,并返回这个元素。该方法会改变数组的长度。
arr.shift()
shift
方法移除索引为 0 的元素(即第一个元素),并返回被移除的元素,其余元素的索引值随之减 1。若是 length
属性的值为 0 (长度为 0),则返回undefined
。
shift
方法并不局限于数组:该方法亦可经过 call
或 apply
做用于对象上。对于不包含 length 属性的对象,将添加一个值为 0 的 length 属性。
slice()
方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。
arr.slice([begin[, end]])
begin
则表示从原数组中的倒数第几个元素开始提取,
slice(-2)
表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
begin
,则 slice
从索引 0 开始。
end
slice
会提取原数组中索引从 begin
到 end
的全部元素(包含begin,但不包含end)。
slice(1,4)
提取原数组中的第二个元素开始直到第四个元素的全部元素 (索引为 1, 2, 3的元素)。
则它表示在原数组中的倒数第几个元素结束抽取
。 slice(-2,-1)
表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
end
被省略,则slice
会一直提取到原数组末尾。
一个含有提取元素的新数组
slice
不修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。原数组的元素会按照下述规则拷贝:
slice
会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。若是被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变。String
、Number
或者 Boolean
对象),slice
会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另外一个数组。若是向两个数组任一中添加了新元素,则另外一个不会受到影响。
sort()
方法对数组的元素作原地的排序,并返回这个数组。 sort 排序多是不稳定的。默认按照字符串的Unicode码位点(code point)排序。
arr.sort([compareFunction])
compareFunction
若是没有指明 compareFunction
,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序。例如 "Banana" 会被排列到 "cherry" 以前。数字比大小时,9 出如今 80 以前,但这里比较时数字会先被转换为字符串,因此 "80" 比 "9" 要靠前。
var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort(); // ['apples', 'bananas', 'cherries']
var scores = [1, 10, 2, 21];
scores.sort(); // [1, 10, 2, 21]
// Watch out that 10 comes before 2,
// because '10' comes before '2' in Unicode code point order.
var things = ['word', 'Word', '1 Word', '2 Words'];
things.sort(); // ['1 Word', '2 Words', 'Word', 'word']
// In Unicode, numbers come before upper case letters,
// which come before lower case letters.
若是指明了 compareFunction
,那么数组会按照调用该函数的返回值排序。记 a 和 b 是两个将要被比较的元素:
compareFunction(a, b)
小于 0 ,那么 a 会被排列到 b 以前;compareFunction(a, b)
等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,并且也不是全部浏览器都会遵照(例如 Mozilla 在 2003 年以前的版本);compareFunction(a, b)
大于 0 , b 会被排列到 a 以前。compareFunction(a, b)
必须老是对相同的输入返回相同的比较结果,不然排序的结果将是不肯定的。因此,比较函数格式以下:
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion)
{
return 1;
} // a must be equal to b return 0;
}
但愿比较数字而非字符串,比较函数能够简单的以 a 减 b,以下的函数将会将数组升序排列
function compareNumbers(a, b) { return a - b; }
sort
方法可使用 函数表达式 方便地书写:
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]
对象能够按照某个属性排序:
var items = [ { name: 'Edward', value: 21 }, { name: 'Sharpe', value: 37 }, { name: 'And', value: 45 }, { name: 'The', value: -12 }, { name: 'Magnetic' }, { name: 'Zeros', value: 37 } ];
items.sort(function (a, b) {
if (a.value > b.value) {
return 1;
}
if (a.value < b.value) {
return -1;
} // a 必须等于 b return 0; });
splice()
方法用新元素替换旧元素,以此修改数组的内容。
array.splice(start, deleteCount[, item1[, item2[, ...]]])
start
deleteCount
deleteCount
是 0,则不移除元素。这种状况下,至少应添加一个新元素。若是 deleteCount
大于start
以后的元素的总数,则从 start
后面的元素都将被删除(含第 start
位)。
itemN
splice()
只删除数组元素。
由被删除的元素组成的一个数组。若是只删除了一个元素,则返回只包含一个元素的数组。若是没有删除元素,则返回空数组。
若是添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。
注释:请注意,splice() 方法与 slice() 方法的做用是不一样的,splice() 方法会直接对数组进行修改。
splice()
以下代码演示了 splice 的用法:
toString()
返回一个字符串,表示指定的数组及其元素。
arr.toString()
无
Array
对象覆盖了 Object
的 toString
方法。对于数组对象,toString
方法返回一个字符串,该字符串由数组中的每一个元素的 toString()
返回值经调用 join()
方法链接(由逗号隔开)组成。例如,下面的代码建立了一个数组,而后使用 toString
方法把该数组转成一个字符串。
var monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];
var myVar = monthNames.toString(); // assigns "Jan,Feb,Mar,Apr" to myVar.
当一个数组被做为文本值或者进行字符串链接操做时,将会自动调用其 toString
方法。
从 JavaScript 1.8.5 (Firefox 4) 开始,和 ECMAScript 第5版语义(semantics)一致,toString()
方法是通用的,可被用于任何对象。若是对象有一个 join()
方法,将会被调用,其返回值将被返回。没有则调用 Object.prototype.toString()
方法。
unshift()
方法在数组的开头添加一个或者多个元素,并返回数组新的 length 值。
arr.unshift(element1, ..., elementN)
当一个对象调用该方法时,返回其 length
属性值。
unshift
方法会在调用它的类数组(array-like)对象的开始位置插入给定的参数。
unshift
特地被设计成具备通用性;这个方法可以经过 call
或 apply
方法做用于相似数组的对象上。不过对于没有 length 属性(表明从0开始的一系列连续的数字属性的最后一个)的对象,调用该方法可能没有任何意义。