JavaScript如何调整姓名顺序:将名字移至首位?
解决姓名格式调整问题
问题原因
你得到数值结果是因为unshift()和push()这两个数组方法的返回值是修改后数组的长度,不是调整后的数组内容。直接把它们的返回值赋值给变量,拿到的自然是数组长度3,而非目标姓名字符串。
正确解决方法
方法1:按索引直接重组(适合固定3段格式)
你的姓名格式固定为lastname mi firstname,拆分后数组的第0位是姓、第1位是中间名、第2位是名,直接按目标顺序重组拼接即可:
let s = 'lastname mi firstname'; let parts = s.split(' '); // 两种拼接方式任选一种 let fullName = `${parts[2]} ${parts[1]} ${parts[0]}`; // 或者 let fullName = [parts[2], parts[1], parts[0]].join(' '); console.log(fullName); // 输出 "firstname mi lastname"
方法2:解构赋值重组(ES6简洁写法)
用解构赋值直接提取各部分,再按目标顺序拼接:
let s = 'lastname mi firstname'; const [lastName, mi, firstName] = s.split(' '); let fullName = `${firstName} ${mi} ${lastName}`; console.log(fullName); // 输出 "firstname mi lastname"
方法3:修改数组后拼接(适合动态调整场景)
如果需要通过数组操作调整顺序,先执行修改再拼接:
let s = 'lastname mi firstname'; let parts = s.split(' '); // 取出名放到数组开头 const firstName = parts.pop(); parts.unshift(firstName); // 取出现在数组中的姓放到末尾 const lastName = parts.splice(1, 1)[0]; parts.push(lastName); // 拼接成最终字符串 let fullName = parts.join(' '); console.log(fullName); // 输出 "firstname mi lastname"
内容的提问来源于stack exchange,提问作者Travis Heeter
相关产品推荐
相关产品推荐

