如何将数组首尾元素及中间部分分别赋值给独立变量与数组
实现方案
方法1:ES6 解构赋值(推荐)
代码最简洁,符合现代JS语法规范:
// 待拆分的数组 const targetArr = ["New York", "Madrid", "Roma"]; // 拆分逻辑 const [firstValue, ...rest] = targetArr; const lastValue = rest.pop() ?? ''; const middlesValues = rest;
逻辑说明
- 第一步通过解构取出数组第一个元素赋值给
firstValue,剩余所有元素暂存到rest数组 - 调用
pop()取出rest的最后一个元素赋值给lastValue,如果rest为空(原数组长度为1的场景)则默认赋值为空字符串 - 执行
pop后剩下的rest数组就是中间元素,当原数组长度≤2时,rest天然为空,完全匹配需求
不同场景测试结果
- 原数组长度为3:
firstValue = 'New York',middlesValues = ['Madrid'],lastValue = 'Roma' - 原数组长度为2:
firstValue = '北京',middlesValues = [],lastValue = '上海' - 原数组长度为1:
firstValue = '广州',middlesValues = [],lastValue = '' - 原数组长度大于3:
firstValue = 1,middlesValues = [2,3,4],lastValue = 5
方法2:索引取值(兼容ES5及更早环境)
如果需要兼容旧运行环境,可以用索引判断的方式实现:
const targetArr = ["New York", "Madrid", "Roma"]; let firstValue = ''; let middlesValues = []; let lastValue = ''; const arrLen = targetArr.length; if (arrLen >= 1) firstValue = targetArr[0]; if (arrLen >= 2) lastValue = targetArr[arrLen - 1]; if (arrLen >= 3) middlesValues = targetArr.slice(1, arrLen - 1);
内容的提问来源于stack exchange,提问作者KoulJak
相关产品推荐
相关产品推荐

