使用javascript将数组拆分成多个数组时遇到了一些麻烦。例如,我有这个数组:
[0] => object
[0] => object
[0] => The Letter P
[1] => 5.5
[1] => object
[0] => 5
[1] => 1.1
[2] => 5
[3] => 1
[4] => 1
[2] => object
[0] => 5
[1] => 1.1.1
[2] => 1.1.1
[3] => 1.1.1
[4] => 3
我想要做的是分割句点,并创建一个更深的数组:
[0] => object
[0] => object
[0] => The Letter P
[1] => object
[0] => 5
[1] => 5
[1] => object
[0] => 5
[1] => object
[0] => 1
[1] => 1
[2] => 5
[3] => 1
[4] => 1
[2] => object
[0] => 5
[1] => object
[0] => 1
[1] => 1
[2] => 1
[2] => object
[0] => 1
[1] => 1
[2] => 1
[3] => object
[0] => 1
[1] => 1
[2] => 1
[4] => 3
我已经尝试过几乎所有我能想到的东西,但我似乎无法找到有效的代码:(请帮助我:(
答案 0 :(得分:2)
这应该有效
function dotsToArr(arr) {
for(var x = 0; x < arr.length; x++) {
if(typeof(arr[x]) != "object") {
var parts = (arr[x]+"").split(".");
if(parts.length > 1) {
arr[x] = parts;
}
continue;
}
dotsToArr(arr[x]);
}
}
答案 1 :(得分:0)
这不是一个完整的解决方案,但我使用这个功能来完成你正在描述的事情。
function parseStringToArray(inputString){
var parts = inputString.split(".");
var arr = [];
while (parts.length){
arr.push(parts.shift());
}
return arr;
}
function parseArray(inputArray){
var arrayLength = inputArray.length;
for (var i = 0; i < arrayLength; i++){
if (inputArray[i].indexOf('.'){
inputArray[i] = parseStringToArray(inputArray[i]);
}
}
}
答案 2 :(得分:0)
这会有帮助吗?
var toString = Object.prototype.toString;
function parseArray(obj) {
var i, l;
if (toString.call(obj) === "[object Number]") {
obj += "";
}
if (toString.call(obj) === "[object String]" && obj.indexOf(".") !== -1) {
obj = obj.split(".");
}
if (toString.call(obj) === "[object Array]") {
for (i = 0, l = obj.length; i < l; i++) {
obj[i] = parseArray(obj[i]);
}
}
return obj;
}
答案 3 :(得分:0)
感谢您的所有回复,但我设法自己解决了这个问题。当您从编程中休息一下并让您的思绪放松时,会发生什么事情。无论如何,知道我在我的数组中有三个开始,我能够编写以下代码:
for(a = 0; a < array.length; a++){
for(var b = 0; b < array[a].length; b++){
for(var c = 0; c < array[a][b].length; c++){
if(array[a][b][c].indexOf(".") > 0){
array[a][b][c] = array[a][b][c].split(".");
}
}
}
}
起初我尝试使用while循环,但这需要更多的代码,而且更令人困惑。然后我开始使用for循环,这对于这种类型的系统来说效果更好。再次感谢您的回复,我希望这可以帮助其他任何尝试做同样事情的人。