javascript中array常用属性方法
属性:
length 表示一个无符号 32-bit 整数,返回一个数组中的元素个数。
截短数组..截短至长度2 则: .length = 2
方法:
Array.from() 方法可以将一个类数组对象或可遍历对象转换成真正的数组。
Array.isArray() 方法用来判断某个值是否为Array。如果是,则返回 true,否则返回 false。
Array.of() 方法会将它的任意类型的多个参数放在一个数组里并返回。
Array.of() 和 Array 构造函数不同的是:在处理数值类型的参数时,Array.of(42) 创建的数组只有一个元素,即 42, 但 Array(42) 创建了42个元素,每个元素都是undefined。
示例
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回.
注意: 连接一个或多个数组(值)将不会改变原本的数组/值。进一步说,任何对新数组的操作都不会对原有的数组造成影响(仅当该元素不是对象的引用时),反之亦然。
示例:
两个数组合并为一个新数组 var newArray = array1.concat(array2)
三个数组合并为一个新数组 var newArray = array1.concat(array2,array3)
将非数值合并到数组里 var newArray = array1.concat(1)
copyWithin() 方法会浅拷贝数组的部分元素到同一数组的不同位置,且不改变数组的大小,返回该数组。
every() 方法测试数组的所有元素是否都通过了指定函数的测试。
语法
arr.every(callback[, thisArg])
参数
callback用来测试每个元素的函数。
thisArg执行 callback 时使用的 this 值。
callback 被调用时传入三个参数:元素值,元素的索引,原数组。
检测所有数组元素的大小
下例检测数组中的所有元素是否都大于 10。
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
fill() 方法,可以将一个数组中指定区间的所有元素的值, 都替换成或者说填充成为某个固定的值。
参数
value 用来填充数组元素的值。
start 可选,开始索引。
end 可选,结束索引。
具体要填充的元素区间是 [start, end) , 一个半开半闭区间.
fill 方法接受三个参数 value, start 以及 end. start 和 end 参数是可选的, 其默认值分别为 0 和 this 对象的 length 属性值.
如果 start 是个负数, 则开始索引会被自动计算成为 length+start, 其中 length 是 this 对象的 length 属性值. 如果 end 是个负数, 则结束索引会被自动计算成为 length+end.
示例
[1, 2, 3].fill(4) // [4, 4, 4]
[1, 2, 3].fill(4, 1) // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2) // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1) // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2) // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN) // [1, 2, 3]
Array(3).fill(4); // [4, 4, 4]
filter() 方法使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组。filter 不会改变原数组。
参数
callback用来测试数组的每个元素的函数。调用时使用参数 (element, index, array)。
返回true表示保留该元素(通过测试),false则不保留。
thisArg可选。执行 callback 时的用于 this 的值。
描述 : filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组。callback 只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。
callback 被调用时传入三个参数:
- 元素的值
- 元素的索引
- 被遍历的数组
例子:筛选排除掉所有的小值
下例使用 filter 创建了一个新数组,该数组的元素由原数组中值大于 10 的元素组成。
function isBigEnough(element) {
return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
find() 方法就会返回那个元素的第一个值,如果没有满足条件的元素,则返回 undefined。find方法不会改变数组。
语法
arr.find(callback[, thisArg])
参数 callback 同上
findIndex()方法用来查找数组中某指定元素的索引, 如果找不到指定的元素, 则返回 -1. (2015年的方法)
forEach() 方法对数组的每个元素执行一次提供的函数(回调函数)。
语法
array.forEach(callback[, thisArg])
参数
callback函数为每个元素执行,接收三个参数:
currentValue(当前值) 数组中正在处理的当前元素。index(索引) 数组中正在处理的当前元素的索引。array 正在应用forEach()数组。。
thisArg可选
可选参数。当执行回调 函数时用作this的值(参考对象)。
描述
forEach 方法按升序为数组中含有效值的每一项执行一次callback 函数,那些已删除(使用delete方法等情况)或者从未赋值的项将被跳过(但不包括那些值为 undefined 的项)。
callback 函数会被依次传入三个参数:
- 数组当前项的值
- 数组当前项的索引
- 数组对象本身
如果给forEach传递了thisArg 参数,它将作为 callback 函数的执行上下文,类似执行如下函数callback.call(thisArg, element, index, array)。如果 thisArg 值为 undefined 或 null,函数的 this 值取决于当前执行环境是否为严格模式(严格模式下为 undefined,非严格模式下为全局对象)。
forEach 遍历的范围在第一次调用 callback 前就会确定。调用forEach 后添加到数组中的项不会被 callback 访问到。如果已经存在的值被改变,则传递给 callback 的值是 forEach 遍历到他们那一刻的值。已删除的项不会被遍历到。
注意: 没有办法中止或者跳出 forEach 循环,除了抛出一个异常。如果你需要这样,使用forEach()方法是错误的,你可以用一个简单的循环作为替代。如果您正在测试一个数组里的元素是否符合某条件,且需要返回一个布尔值,那么可使用 Array.every 或 Array.some。
forEach 为数组中的元素执行一次 callback 函数,不像 every 和 some,它总是返回 undefined。
示例
打印出数组的内容
下面的代码会为每一个数组元素输出一行记录:
function logArrayElements(element, index, array) {
console.log("a[" + index + "] = " + element);
}
[2, 5, 9].forEach(logArrayElements);
// logs:
// a[0] = 2
// a[1] = 5
// a[2] = 9
Array.ForEach is about 95% slower than for() in for each for Arrays in JavaScript.
So, don't use:
arr.forEach(function (item) {
someFn(item);
})
Use:
for (var i = 0, len = arr.length; i < len; i++) {
someFn(arr[i]);
}
includes() 方法用来判断当前数组是否包含某指定的值,如果是,则返回 true,否则返回 false。
语法
var boolean = array.includes(searchElement[, fromIndex])
参数 : searchElement需要查找的元素值。
fromIndex可选参数。从该索引处开始查找 searchElement,默认为 0。
返回值:一个 Boolean。
示例
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
indexOf()方法返回给定元素能找在数组中找到的第一个索引值,否则返回-1
join() 方法将数组中的所有元素连接成一个字符串。
参数 :separator可选,用于指定连接每个数组元素的分隔符。分隔符会被转成字符串类型;如果省略的话,默认为一个逗号。如果 seprator 是一个空字符串,那么数组中的所有元素将被直接连接。
var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire"
var myVar2 = a.join(', '); // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join(''); // myVar4的值变为"WindRainFire"
keys() 方法返回一个数组索引的迭代器。2015
map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。map 不修改调用它的原数组本身
语法: array.map(callback[, thisArg])
下面的代码创建了一个新数组,值为原数组中对应数字的平方根。
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
/* roots的值为[1, 2, 3], numbers的值仍为[1, 4, 9] */
反转字符串
var str = '12345';
Array.prototype.map.call(str, function(x) {
return x;
}).reverse().join('');
// Output: '54321'
// Bonus: use '===' to test if original string was a palindrome
pop() 方法删除一个数组中的最后的一个元素,并且返回这个元素。
push() 方法添加一个或多个元素到数组的末尾,并返回数组新的长度(length 属性值)。
reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
reduceRight() 方法接受一个函数作为累加器(accumulator),让每个值(从右到左,亦即从尾到头)缩减为一个值。(与 reduce() 的执行方向相反)
reverse() 方法颠倒数组中元素的位置。第一个元素会成为最后一个,最后一个会成为第一个。
下例将会创建一个数组 myArray,其包含三个元素,然后颠倒该数组。
var myArray = ['one', 'two', 'three'];
myArray.reverse();
console.log(myArray) // ['three', 'two', 'one']
shift() 方法删除数组的 第一个 元素,并返回这个元素。该方法会改变数组的长度。
slice() 方法会浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。
参数 [ begin end) begin和end是索引...大于等于begin小于end的区域被裁减出来
some() 方法测试数组中的某些元素是否通过了指定函数的测试。
例子:测试数组元素的值
下面的例子检测在数组中是否有元素大于 10。
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
sort() 方法对数组的元素做原地的排序,并返回这个数组。 sort 排序可能是不稳定的。默认按照字符串的Unicode码位点(code point)排序。
如果没有指明 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.
toLocaleString() 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 ",")隔开。
数组中的元素将会使用各自的 toLocaleString 方法:
- Object: Object.prototype.toLocaleString()
- Number: Number.prototype.toLocaleString()
- Date: Date.prototype.toLocaleString()
例子:使用 toLocaleString
var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];
var str = myArr.toLocaleString();
console.log(str);
// 输出 "1337,2015/2/27 下午8:29:04,foo"
// 假定运行在中文(zh-CN)环境,北京时区
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.
unshift() 方法在数组的开头添加一个或者多个元素,并返回数组新的 length 值。
values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。
posted on 2017-08-21 17:52 taiyang2014 阅读(136) 评论(0) 编辑 收藏 举报