如何用Ruby将指定数组转换为目标数组(新手友好版)
数组转换的新手友好实现方法
先明确需求:
原始数组:
const originalArr = [["10"], ["20"], ["30"], ["40"], ["21"], ["31"], ["41"], ["32"], ["42"], ["43"]];
目标数组:
[[1, 0], [2, 0], [3, 0], [4, 0], [2, 1], [3, 1], [4, 1], [3, 2], [4, 2], [4, 3]]
方法一:基础for循环(最容易理解遍历过程)
这是对新手最友好的方式,每一步逻辑清晰可控:
// 1. 定义原始数组 const originalArr = [["10"], ["20"], ["30"], ["40"], ["21"], ["31"], ["41"], ["32"], ["42"], ["43"]]; // 2. 创建空数组存储转换后的结果 const resultArr = []; // 3. 遍历原始数组的每一项 for (let i = 0; i < originalArr.length; i++) { // 取出当前子数组里的字符串(比如["10"]里的"10") const str = originalArr[i][0]; // 拆分字符串为单个字符,再转换为数字 const num1 = Number(str[0]); const num2 = Number(str[1]); // 把两个数字组成新数组,添加到结果数组中 resultArr.push([num1, num2]); } console.log(resultArr); // 输出就是目标数组
方法二:forEach遍历(更简洁的遍历方式)
如果已经理解了遍历逻辑,可以用forEach简化代码:
const originalArr = [["10"], ["20"], ["30"], ["40"], ["21"], ["31"], ["41"], ["32"], ["42"], ["43"]]; const resultArr = []; originalArr.forEach(item => { const str = item[0]; resultArr.push([Number(str[0]), Number(str[1])]); }); console.log(resultArr);
关键步骤说明
originalArr[i][0]:原始数组的每一项都是仅含一个元素的子数组,所以要先提取出子数组里的字符串。Number(str[0]):把字符串的第一个字符转换成数字,比如"10"的第一个字符是"1",转换后得到数字1。push():将新生成的子数组添加到结果数组的末尾,逐步构建出目标数组。
内容的提问来源于stack exchange,提问作者wanderingnowhere
相关产品推荐
相关产品推荐

