数组的内置方法

数组:

1)栈方法(先进后出):

push(item,item) 压栈 向数组末尾添加元素
pop() 出栈 删除数组末尾元素

例:

var arr=[];
arr.push(100);
arr.push(200);
arr.push(2300);
console.log(arr);
arr.pop();

arr.push('hello','world','hi');
console.log(arr);

2)队列方法(先进先出):

push() 进队
shift() 出队 删除数组头部元素

例:

var arr=[];
arr.push(100);
arr.push(2,3,4,6);
console.log(arr);
arr.shift();

console.log(arr);

3)数组操作方法

concat(arr,arr) 合并数组 产生新数组
unshift(item,item) 在数组头部插入元素 修改原数组
splice(index,howmany) 删除指定位置的元素: 修改原数组
splice(index,howmany,item…item)
在指定位置删除元素后,再添加元素
slice(start,end) 截取数组 [start,end) 产生新数组

例:

var arr=[100,200,300];
var arrx=[102,30,40];
var arr0=['hello','world'];

var arr1=arr.concat(arr0,arrx);
console.log(arr1);
console.log(arr);
console.log(arr0);

arr.unshift('我','是');

arr.splice(1,2);
console.log(arr);
console.log(arr0);

arr.splice(1,0,8,9,10);
arr.splice(1,1,90,900);

console.log(arr);

var arr=[10,20,80,100];
var arr0=arr.slice(2,3);
var arr0=arr.slice(0);//复制数组
var arr1=arr.concat();//复制数组
console.log(arr0);
console.log(arr);
console.log(arr1);

4)排序方法

sort() 排序
注意:
默认情况按照字符串(ASCII)排序
其他排序:
需要将排序算法(函数)传入参数内
reverse() 颠倒数组 修改原数组

例:

var arr=[100,80,90,200];
arr.reverse();
console.log(arr);


var arr=[9,8,1,2,5];
var arr=[10,20,5,9,8,30];

arr.sort();//排序   升序
console.log(arr);
        
arr.sort(function(a,b){
 if(a>b){
     return 1;
 }else if(a<b){
     return -1;
}
     return 0;
});


//升序
arr.sort(function(a,b){
     return a-b;
});
console.log(arr);

5)与字符串相关的方法
join(sp) 使用指定字符将数组拼接成字符串

例:

var arr=[100,200,300,400];

var str=arr.join('?');
var str=arr.join(' ');
 console.log(str);

var arr0=str.split('?');
console.log(arr0);
<think>嗯,用户想让我用JavaScript的数组方法创建一个新数组,把原数组中的唯一值加进去。原数组是[1,2,2,3,3,3,4,4,4,4,5,5,5],也就是每个数字重复次数等于它的值。用户需要新数组只包含唯一值,也就是每个元素只出现一次。 首先,我得想怎么去重。数组去重的常用方法有哪些呢?记得有几种办法,比如用Set,或者用filter方法结合indexOf,或者用reduce。用户要求用数组内置方法,所以可能需要符合这一点。 比如,使用Set是最简单的,因为Set会自动去重,然后转回数组。那应该就是[...new Set(arr)]。不过用户可能希望用其他方法,比如filter。例如,用arr.filter((item, index) => arr.indexOf(item) === index),这样每个元素第一次出现的索引等于当前索引,就保留下来,这样就能去重了。 另外,还可以用reduce,遍历数组,如果累积的数组里没有当前元素,就加进去。比如arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], [])。 不过用户的问题里提到“数组内置方法”,所以这些方法都是内置的。Set的方式应该是最简洁的,但可能用户想考察多种方法的应用。 然后,用户需要打印新数组,所以最后用console.log输出结果。 那正确的代码应该是: const arr = [1,2,2,3,3,3,4,4,4,4,5,5,5]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // 输出 [1, 2, 3, 4, 5] 或者用filter的方式: const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); 或者用reduce: const uniqueArr = arr.reduce((acc, cur) => { if (!acc.includes(cur)) { acc.push(cur); } return acc; }, []); 这几种方法都可以。不过最推荐的是Set的方法,因为它简洁高效。不过Set是ES6的特性,可能在旧环境不支持,但一般情况下没问题。 需要解释的是Set会自动去除重复的值,然后通过扩展运算符转成数组。这样就能得到唯一值的数组。</think><< 可以使用 `Set` 结合展开运算符来快速实现数组去重。以下是具体代码: ```javascript const arr = [1,2,2,3,3,3,4,4,4,4,5,5,5]; const uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // 输出 [1, 2, 3, 4, 5] ``` **解释**: 1. `new Set(arr)` 会创建一个集合对象,自动过滤重复值 2. `[... ]` 展开运算符将集合对象转换为数组 3. 这是ES6+的现代写法,时间复杂度为O(n),性能最优 替代方案(使用filter): ```javascript const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); ``` **解释**: 1. `indexOf` 总是返回元素第一次出现的索引 2. 通过比较当前索引和首次出现索引,过滤重复项 3. 时间复杂度为O(n²),适合小型数组
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值