Javascript将数组拆分为多个数组
我在使用javascript将一个数组拆分为多个数组时遇到了一些问题。例如,我有一个数组:Javascript将数组拆分为多个数组,javascript,arrays,split,Javascript,Arrays,Split,我在使用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]
[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
我已经尝试了我能想到的一切,但我似乎找不到一个有效的代码:(请帮助我:(这不是一个完整的解决方案,但我使用这个函数来完成您所描述的事情
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]);
}
}
}
函数parseStringToArray(inputString){
var parts=inputString.split(“.”);
var-arr=[];
while(零件长度){
arr.push(parts.shift());
}
返回arr;
}
函数parseArray(inputArray){
var arrayLength=inputArray.length;
对于(变量i=0;i
这应该行得通
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]);
}
}
函数dotstorar(arr){
对于(变量x=0;x1){
arr[x]=零件;
}
继续;
}
dotstorar(arr[x]);
}
}
JS Fiddle这里:这有帮助吗
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;
}
var-toString=Object.prototype.toString;
函数数组(obj){
变量i,l;
如果(toString.call(obj)==“[对象编号]”){
obj+=”;
}
if(toString.call(obj)==“[对象字符串]”&&obj.indexOf(“.”)!=-1){
对象=对象拆分(“.”);
}
if(toString.call(obj)=“[object Array]”){
对于(i=0,l=obj.length;i
感谢您的回复,但我自己设法解决了这个问题。当您从编程中休息一下,让您的大脑放松下来时,会发生什么令人惊讶的事情。无论如何,知道我的数组中有三个层要开始,我能够编写以下代码:
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(".");
}
}
}
}
(a=0;a{
对于(var b=0;b0){
数组[a][b][c]=数组[a][b][c]。拆分(“.”);
}
}
}
}
起初我尝试使用while循环,但这需要更多的代码,而且更加混乱。然后我开始使用for循环,这对于这种类型的系统来说效果更好。再次感谢您的回复,我希望这能帮助其他尝试做同样事情的人。是数字字符串还是数字?测试
如果(~~x!==x)
表示数字,x.indexOf('.')
表示字符串。您发布的代码无效javascript。我不知道所有的编程语言,但我认为它在任何语言中都是无效的语法。因为你的问题是关于javascript的:你能展示javascript代码来澄清你的问题吗?@PaulS.:那应该做32位整数转换吗?只需测试typeof x
@Bergi它测试一个数字是否不等于整数如果这是真的,那么这个数字就有一些非整数部分,这是一种特殊的行为。@PaulS:“啊,这是一个答案。我怀疑这与你关于属性类型的问题有关。”。