如何实现将二维数组子数组首元素与次元素拼接后替换首元素?
解决方案:修改二维数组的子数组首元素
嘿,这需求很清晰,我给你两种靠谱的实现方式,看你偏好哪种:
方式一:用map()生成新数组(推荐,不修改原数组)
这种方式会返回一个全新的数组,不会改动你原来的strList,非常适合需要保留原数据的场景:
var strList = [['attribute','rulelist'],['attribute1','rulelist1']]; // 遍历每个子数组,生成处理后的新数组 var processedList = strList.map(subArray => { // 先复制原有的子数组,避免修改原数据 const newSub = [...subArray]; // 把第一个元素替换成「首元素_次元素」的拼接结果 newSub[0] = `${newSub[0]}_${newSub[1]}`; return newSub; }); console.log(processedList); // 输出结果:[["attribute_rulelist", "rulelist"], ["attribute1_rulelist1", "rulelist1"]]
为什么推荐这个?
map()是数组的原生方法,专门用来做「数组转换」,代码可读性很高- 用扩展运算符
[...subArray]复制子数组,保证原数组的数据完全不受影响,避免后续意外bug
方式二:直接修改原数组(用你熟悉的for循环)
如果你不需要保留原数组,想直接修改它,那可以简化你原来的循环逻辑,不用嵌套遍历子数组的每个元素,直接操作子数组的前两个元素就行:
var strList = [['attribute','rulelist'],['attribute1','rulelist1']]; for(var i = 0; i < strList.length; i++) { // 直接替换当前子数组的第一个元素 strList[i][0] = strList[i][0] + '_' + strList[i][1]; } console.log(strList); // 输出同样符合你的期望
这个方式的优势:
- 和你原来写的代码逻辑衔接更顺畅,不需要学习新的数组方法
- 直接修改原数组,节省一点点内存(如果数组特别大的话)
两种方式都能完美实现你要的效果,选哪个看你的具体场景就好~
内容的提问来源于stack exchange,提问作者Nandini
相关产品推荐
相关产品推荐

