前段js-把数组指定元素放在第一位

本文介绍了一种在JavaScript中将指定元素移动至数组首位的方法,适用于数字和对象类型的元素。通过splice和unshift方法组合使用,实现了高效地元素位置调整。

假如我们有个已知数组 arr
var arr = [1,2,3,4]
var key = 3
我们要根据key的值来找到这个元素,然后把它挪到数组的第一位,让它返回的结果为[3,1,2,4]
for (var i = 0; i < arr.length; i++) {
if (arr[i] === key) {
arr.splice(i, 1);
break;
}
}
arr.unshift(key);
2、数组中是对象,例如把是单据编号的置顶;

 var dataArr = {"state":200,"request":null,"message":"","cause":"","variables":{},"data":[{"changeTime":"2019-12-21 11:20:09.0","changeAfter":"K","contractName":"客商类型","changeBefore":"D"},{"changeTime":"2019-12-21 11:20:09.0","changeAfter":"弋华蕾","contractName":"制单人姓名","changeBefore":"弋华"},{"changeTime":"2019-12-21 11:20:09.0","changeAfter":"FM20191221000120","contractName":"单据号码","changeBefore":"FM20191221000119"}]}

var arr = dataArr.data

for (var i = 0; i < arr.length; i++) {
    if(arr[i].contractName === '单据号码'){
       var obj = arr[i];
  arr.splice(i, 1);

  break
    }
}
  arr.unshift(obj);
console.log(arr)
<think> 首先,用户的问题是:“我想查找使用JavaScript获取数组最后一位元素的方法 请问JavaScript获取数组最后一位元素的方法”。这很直接:用户想知道在JavaScript中如何获取数组的最后一个元素。 从系统级指令中,我知道: - 所有行内数学表达式必须使用$...$格式。 - 独立公式必须使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户提供的引用包括多个来源: - 引用[1]到[5]都讨论了获取数组最后一个元素的方法。 我需要结构化我的回答: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 - 最后生成相关问题。 关键点: - 方法包括:使用length属性、pop方法、slice方法、at方法(ES2022)、reverse方法。 - 有些方法会修改原数组(如pop),有些不会(如slice)。 - 我应该覆盖这些方法,并解释它们的特点。 步骤: 1. **介绍主题**:简要说明获取数组最后一个元素的常见需求。 2. **列出方法**:清晰列出几种方法,包括代码示例。 3. **解释优缺点**:说明每个方法的优缺点,比如是否会修改原数组、兼容性等。 4. **推荐方法**:基于可靠性和现代性,推荐一个或几个方法。 5. **添加引用**:在解释中自然地添加引用标识。 6. **生成相关问题**:在结束时添加相关问题。 确保使用中文回答。 方法总结: - **1. 使用length属性**:`arr[arr.length - 1]` – 兼容性好,不修改数组- **2. 使用pop方法**:`arr.pop()` – 修改原数组,返回最后一个元素- **3. 使用slice方法**:`arr.slice(-1)[0]` – 不修改数组,返回一个新数组元素- **4. 使用at方法**:`arr.at(-1)` – ES2022新特性,简洁,但不支持老浏览器。 - **5. 使用reverse方法**:`arr.reverse()[0]` – 修改原数组(因为reverse会改变数组),不推荐。 在代码中,我应该使用行内代码或代码块。用户示例中使用了```python```代码块,但这里是JavaScript,所以我应该使用```javascript```。 引用添加: - 在讨论每个方法时,参考引用[1]到[5],自然地添加引用标识。 结构: - 开头:解释问题。 - 主体:分点列出方法。 - 结尾:总结和推荐。 - 相关问题。 相关问题生成: - 基于主题,生成2-3个相关问题。 - 例如:如何获取数组的倒数第二个元素?at方法的兼容性如何?如何安全地获取数组元素而不修改数组? 最终回答: - 确保真实可靠:基于JavaScript标准。 </think> ### JavaScript 获取数组最后一位元素的方法 在JavaScript中,获取数组的最后一个元素是常见需求,例如处理一维数组如`[1, 2, 3]`或二维对象数组`[{id:1}, {id:2}]`。下面我将逐步介绍几种可靠的方法,包括代码示例、优缺点和适用场景。这些方法均基于JavaScript标准语法,并考虑了兼容性和安全性[^1][^2][^3][^4][^5]。 #### 1. **使用`length`属性** 这是最基础且兼容性最好的方法(支持所有浏览器),通过数组长度减一作为索引来获取最后一个元素。它不会修改原数组。 ```javascript const arr = [1, 2, 3]; const lastElement = arr[arr.length - 1]; console.log(lastElement); // 输出: 3 ``` - **优点**:简单高效,支持所有JavaScript版本。 - **缺点**:代码稍显冗长。 - **适用场景**:通用场景,尤其当需要兼容老旧浏览器时[^1][^4]。 #### 2. **使用`pop()`方法** `pop()`方法删除并返回数组的最后一个元素,但会直接修改原数组。 ```javascript const arr = [1, 2, 3]; const lastElement = arr.pop(); console.log(lastElement); // 输出: 3 console.log(arr); // 输出: [1, 2](原数组被修改) ``` - **优点**:代码简洁,适用于不需要保留原数组的情况。 - **缺点**:修改原数组,可能导致意外副作用。 - **适用场景**:需要同时删除最后一个元素时,如队列处理[^1][^2][^5]。 #### 3. **使用`slice()`方法** `slice(-1)`返回一个包含最后一个元素的新数组,再通过索引`[0]`获取元素。它不会修改原数组。 ```javascript const arr = [1, 2, 3]; const lastElement = arr.slice(-1)[0]; console.log(lastElement); // 输出: 3 console.log(arr); // 输出: [1, 2, 3](原数组不变) ``` - **优点**:安全(不修改数组),支持负数索引。 - **缺点**:返回新数组,性能略低于直接索引。 - **适用场景**:需要避免修改原数组的敏感操作[^1][^3][^4]。 #### 4. **使用`at()`方法(ES2022新特性)** `at(-1)`直接返回最后一个元素,语法简洁。但这是ES2022新增特性,需注意兼容性(不支持IE或老浏览器)。 ```javascript const arr = [1, 2, 3]; const lastElement = arr.at(-1); console.log(lastElement); // 输出: 3 ``` - **优点**:代码最简洁,可读性强。 - **缺点**:兼容性有限(Node.js 16+、现代浏览器)。 - **适用场景**:现代前端项目(如Vue.js、React),可使用Babel转译[^1][^2][^4]。 #### 5. **使用`reverse()`方法(不推荐)** 先颠倒数组顺序,再取第一个元素。但`reverse()`会修改原数组,且性能较低。 ```javascript const arr = [1, 2, 3]; const lastElement = arr.reverse()[0]; console.log(lastElement); // 输出: 3 console.log(arr); // 输出: [3, 2, 1](原数组被修改) ``` - **优点**:无实际优势,仅作了解。 - **缺点**:修改原数组,效率低。 - **适用场景**:不推荐常规使用[^5]。 #### 总结与推荐 - **推荐方法**:优先使用`length`属性(兼容性好)或`at()`方法(现代简洁),避免`pop()`和`reverse()`以防修改数组- **安全提示**:操作前检查数组是否为空,避免错误: ```javascript const arr = []; const lastElement = arr.length > 0 ? arr[arr.length - 1] : undefined; ``` - **性能比较**:在大多数场景下,`length`和`at()`方法性能最优[^1][^4]。如果处理二维数组,方法相同(如`arr[arr.length - 1].property`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值