JavaScript Array内置对象(一)

JavaScript Array.prototype 内置对象 (一)
concat()、copyWithIn()、entries()、every()、fill()、filter()…
1、concat()

concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

语法:

concat()
concat(value0)
concat(value0, value1)
concat(value0, value1, /* … ,*/ valueN)

举例:

# 合并两个数组
const letters = ["a", "b", "c"];
const numbers = [1, 2, 3];

const alphaNumeric = letters.concat(numbers);
console.log(alphaNumeric);
// results in ['a', 'b', 'c', 1, 2, 3]
2、copyWithin()

copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
语法:

copyWithin(target)
copyWithin(target, start)
copyWithin(target, start, end)

target:序列开始替换的目标位置,以 0 为起始的下标表示,且将被转换为整数
start:要复制的元素序列的起始位置,以 0 为起始的下标表示,且将被转换为整数
end:要复制的元素序列的结束位置,以 0 为起始的下标表示,且将被转换为整数。copyWithin 将会拷贝到该位置,但不包括 end 这个位置的元素。

举例:

console.log([1, 2, 3, 4, 5].copyWithin(-2));			// [1, 2, 3, 1, 2]
console.log([1, 2, 3, 4, 5].copyWithin(0, 3));			// [4, 5, 3, 4, 5]
console.log([1, 2, 3, 4, 5].copyWithin(0, 3, 4));		// [4, 2, 3, 4, 5]
console.log([1, 2, 3, 4, 5].copyWithin(-2, -3, -1));	// [1, 2, 3, 3, 4]
3、entries()、keys() 、values()

entries() 方法返回一个新的数组迭代器 (en-US)对象,该对象包含数组中每个索引的键/值对。
keys():方法返回一个新的数组迭代器 (en-US)对象,其中包含数组中每个索引的键。
values() :方法返回一个新的数组迭代器 (en-US)对象,该对象迭代数组中每个元素的值。

举例:

#entries()
const array1 = ['a', 'b', 'c'];
const iterator = array1.entries();		// 遍历数组,返回键值对

#values()
const array1 = ['a', 'b', 'c'];
const iterator = array1.values();		// 遍历数组,返回键

# keys()
const array1 = ['a', 'b', 'c'];
const iterator = array1.keys(); 		//遍历数组,返回值
4、every()

every() 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值,它是一个迭代方法。
语法:

every(callbackFn)
every(callbackFn, thisArg)   //等同于 every((element,index,array)=>{},thisArg)

举例:检查一个数组是否是另一个数组的子集

const isSubset = (array1, array2) =>
  array2.every((element) => array1.includes(element));

console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 7, 6])); // true
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 8, 7])); // false
5、fill()

fill() 方法用一个固定值填充一个数组中从起始索引(默认为 0)到终止索引(默认为 array.length)内的全部元素。它返回修改后的数组。

fill() 是个修改方法,不会改变 this 的长度,但会改变 this 的内容。

语法:

fill(value)		// start,end 省略,将从0开始,array.length 结束
fill(value, start)
fill(value, start, end)

参数 value: 用来填充数组元素的值。注意所有数组中的元素都将是这个确定的值:如果 value 是个对象,那么数组的每一项都会引用这个元素。

举例:

console.log([1, 2, 3].fill(4)); // [4, 4, 4]
console.log([1, 2, 3].fill(4, 1)); // [1, 4, 4]
console.log([1, 2, 3].fill(4, 1, 2)); // [1, 4, 3]
console.log([1, 2, 3].fill(4, 1, 1)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 3)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, -3, -2)); // [4, 2, 3]
console.log([1, 2, 3].fill(4, NaN, NaN)); // [1, 2, 3]
console.log([1, 2, 3].fill(4, 3, 5)); // [1, 2, 3]
console.log(Array(3).fill(4)); // [4, 4, 4]

// 一个简单的对象,被数组的每个空槽所引用
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
6、filter()

filter() 方法创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。

语法:同 every() 方法,意义不同

filter(callbackFn)
filter(callbackFn, thisArg)

举例:筛选排除所有较小的值

function isBigEnough(value) {
  return value >= 10;
}

const filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值