js 数组操作方法(不改变原数组与改变原数组方法)

本文介绍了JavaScript中数组的各种操作方法,包括不改变原数组的操作如concat、join、slice等,以及改变原数组的操作如pop、push、shift等。通过具体实例展示了每种方法的使用方式及其效果。

一: 不改变原数组的方法

1. concat() 方法用于连接两个或多个数组

let a =[1,2,3], b=[4,5,6];
let c = a.concat(b);
console.log(a);//[1,2,3]
console.log(b);//[4,5,6]
console.log(c);// [1,2,3,4,5,6]

2. join(); 用于把数组中的所有元素放入一个字符串,元素通过制定分隔符进行分隔的

let a = [1,2,3];
let aa = a.join(':');
console.log(a);// [1,2,3]
console.log(aa);// '1:2:3',如果join 什么也不传默认用, 分隔

3. slice();

数组的截取(start, end), start: 开始索引, end: 结束索引,不写默认截取到末尾

start, end 都不写: 默认截取全部

let a = [1,2,3];
let a1 = aa.slice();
let a2 = aa.slice(1);
let a3 = aa.slice(1,2);
console.log(a);//[1,2,3]
console.log(a1);//[1,2,3]
console.log(a2);//[2,3]
console.log(a3);//[2,3]

4. toString(); 把数组转换成字符串

let a = [1,2,3];
let aa = a.toString();
console.log(a);//[1,2,3]
console.log(aa);//'1,2,3'

5. filter(); 返回为真的,放到一个新的数组里

let a = [1,2,3];
let aa = a.filter(item =>{return item>1});
console.log(a);//[1,2,3]
console.log(aa); // [2,3]

6. map(); 在现有数据基础上进行更改,返回一个新的数组

let a = [1,2,3];
let b = a.map(item =>{ return item * 2});
console.log(a);//[1,2,3]
console.log(b);//[2,4,6]

7. find(); 返回为真的那一项, 找到真则返回不再继续找

let a = [1,2,3];
let b = a.find(item => item===2);
console.log(a);//[1,2,3]
console.log(b);//[2]

二. 改变原数组的方法

1. pop(); 用于删除并返回 数组最后一个元素

let a = [1,2,3];
let b = a.pop();
console.log(a);//[1,2]
console.log(b);//[3]

2. push(); 向数组末尾添加一个或多个元素,并返回新的长度

let a = [1,2,3];
let b = a.push(7);
console.log(a);//[1,2,3,7]
console.log(b);//4

3. shift(); 删除并返回第一个元素的值

let a = [1 ,2 ,3];
let b = a.shift();
console.log(a)// [2,3]
console.log(b);//1

4. unshift(); 向数组的开头添加一个或更多元素,并返回新的长度

let a = [1,2,3];
let b = a.unshift(7);
console.log(a);// [7,1,2,3]
console.log(b); // 4

5. reverse(); 颠倒数组元素中的顺序

let a = [1,2,3];
a.reverse();
console.log(a);// [3,2,1]

6. sort(); 排序

let a = [1,2,5,4,3];
a.sort();
console.log(a);// [1,2,3,4,5] 默认从小到大

// 想要从大到小排序
let b = [1,2,5,4,3];
b.sort((a,b)=> b-a);
console.log(b); // [5,4,3,2,1]

7. splice(start, length); 截取数组中的一部分,start 开始索引,length截取的长度,返回截取的内容

let a = [1,2,3,4,5];
let a1 = a.splice();

let b =[1,2,3];
let b1 = b.splice(1,1);
console.log(a);//[1,2,3,4,5]
console.log(a1);// []
console.log(b);//[1,3]
console.log(b1);// [2]

<think>首先,用户的问题是关于JavaScript数组方法的:具体是“JavaScript数组push方法是否会改变数组”。我需要基于系统级指令和用户可见层的要求来回答。系统级指令的关键点:-所有行内数学表达式用`$...$`格式。-独立公式用`$$...$$`格式并单独成段。-LaTeX语法正确。-使用中文回答。-生成相关问题。-在回答中引用的段落末尾添加引用标识,例如`[^1]`。用户可见层:-回答结构清晰,帮助用户逐步解决问题。-尽量保证回答真实可靠。参考引用:-引用[1]、[2]、[3]提供了关于JavaScript数组方法的信息,特别是哪些方法改变数组。-从这些引用中,我知道:-push()方法改变数组。-引用[1]说push()改变数组方法。-引用[2]提到unshift会改变数组,但push也类似。-引用[3]有代码示例显示push()改变数组。用户的问题是直接的:push方法是否会改变数组?答案是:是的,它会改变数组。回答结构:-我需要结构清晰,逐步解决问题。-首先,直接回答用户的问题。-然后,解释为什么和如何改变。-提供简单的代码示例来演示。-最后,生成相关问题。生成相关问题:-系统指令要求生成相关问题。-在示例中,相关问题被放在“§§相关问题§§”之后。-所以,我需要基于主题生成2-3个相关问题。语言:使用中文。引用标识:-在回答中,如果我引用了信息,需要在末尾添加引用标识。-例如,基于引用[1],我可以添加`[^1]`。具体回答:1.**直接回答**:push方法改变数组。2.**解释**:push()方法将一个或多个元素添加到数组的末尾,并返回新的长度。它修改了数组。3.**代码示例**:用简单的代码展示效果。4.**引用**:参考提供的引用,添加标识。5.**相关问题**:生成相关问题,如其他数组方法是否改变数组等。相关问题想法:-基于主题,JavaScript数组方法。-例如:1.除了push,还有哪些方法改变数组?2.如何在改变数组的情况下添加元素?3.push方法的性能如何?确保真实可靠:基于标准JavaScript知识,push()确实改变数组,这是常识。最终输出结构:-先回答用户问题。-然后,代码块(如果需要)。-最后,相关问题。</think>### JavaScript 数组 push 方法是否会改变数组? 是的,JavaScript 数组的 `push()` 方法改变数组。`push()` 用于将一个或多个元素添加到数组的末尾,并返回数组的新长度。它直接修改数组的内容,而是创建一个新数组。这是 JavaScript 数组方法中常见的“变异方法”(mutator method)之一。 #### 为什么 `push()` 会改变数组? - **工作理**:`push()` 操作直接在数组的内存地址上进行修改,添加新元素后,数组的长度和元素都会更新。 - **其他方法的对比**:JavaScript 数组方法分为两类:一类会改变数组(如 `push()`, `pop()`, `splice()`),另一类改变数组(如 `concat()`, `slice()`, `map()`)。`push()` 属于前者,因为它涉及对数组结构的直接修改。 - **示例说明**:下面是一个简单的代码演示,展示 `push()` 如何改变数组: ```javascript // 数组 let arr = [1, 2, 3]; // 使用 push() 添加元素 let newLength = arr.push(4); // 添加元素 4 到数组末尾 // 检查结果 console.log(arr); // 输出: [1, 2, 3, 4](数组改变) console.log(newLength); // 输出: 4(返回新长度) ``` 在这个例子中,`arr` 的始值被修改了,证明 `push()` 改变数组[^3]。 #### 实际影响 - **优点**:`push()` 高效且直接,适合需要动态更新数组的场景,如实时数据收集或队列操作。 - **注意事项**:如果需要在保留数组变的情况下添加元素,应使用改变数组方法,如 `concat()` 或扩展运算符(`[...arr, newElement]`)。这有助于避免意外的副作用,尤其在函数式编程中[^2]。 总之,`push()` 是改变数组方法,使用时需确保这种修改符合你的需求。如需更多细节,可参考 JavaScript 官方文档或数组方法教程[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值