[英]Joining and Splitting an element from an array of arrays in javascript
所以我正在缓慢但肯定地学习 JavaScript,有人可以帮我找出将join()
和split()
用于非常大的数组或 arrays 的最有效方法吗? 我说的是电子表格中的数千行......这就是我到目前为止所拥有的。
function joinsplitPaste () { var data = [["mike",33,,"KS","male"],["jan",32," ","KS","female"],["dave",33,,"KS","male"],["mike",33, ,"KS","male"],["stan",31,,"KS","male"],["beth",19,"dataText","KS","female"]]; var dataJoin = []; //sample is made up for (i = 0;i<data.length;i++) { return data[i].join(" "); dataJoin.push(data[i]); } var dataSplit = []; /* output - [["mike 33 "KS" "male"],["jan" 32 " " "KS" "female"],["dave" 33 "KS" "male"], and so on...*/ for (i = 0;i<data.length;i++) { return dataJoin[i].Split(" "); dataSplit.push(dataJoin[i]); } //hopefully dataSplit == data? }
任何建议将不胜感激,谢谢。
根据示例代码中的最后一条评论,我假设您追求的最终目标是“dataSplit”数组应该等于原始“data”数组。
但是,示例代码存在 2 个问题,导致您无法实现您想要的:
在“for”循环中存在“return”语句:在第一次迭代后停止执行第一个循环,甚至阻止第二个循环开始。
相等检查不适用于非原始数据类型:javascript 中的数组和 object 数据类型是非原始的,除非两个操作数确实指向 ZCD69B4957F06CD818D7ZBF3D691 中的同一位置,否则相等检查对它们不起作用
例如:{} == {} // false(两个对象,尽管相同,都指向 2 个不同的 memory 位置,因此它们永远不会“相等”)
类似地,[1,2,3] == [1,2,3] // false(原因与对对象的描述相同)
来到示例代码,我有一个修订版本供您生成与原始“数据”数组相同但从不相等的“dataSplit”数组,因为它们是两个不同的变量,因此,不同的 memory 位置。 然而,join 和 split 的使用是正确的。 修订样本:
function joinsplitPaste(){
var data = [["mike",33,,"KS","male"],["jan",32," ","KS","female"],["dave",33,,"KS","male"],["mike",33, ,"KS","male"],["stan",31,,"KS","male"],["beth",19,"dataText","KS","female"]];
var dataJoin = [];
for (i = 0;i<data.length;i++){
dataJoin.push(data[i].join(" ")) ;
}
var dataSplit = [];
for (i = 0;i<data.length;i++){
dataSplit.push(dataJoin[i].split(" ")) ;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.