Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从数组列表创建多维数组/数组树?_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

Javascript 如何从数组列表创建多维数组/数组树?

Javascript 如何从数组列表创建多维数组/数组树?,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一系列: ["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"] 任务是在一个数组中创建一个组合长度为10个字符的数组,在本例中,组合长度如下: [ ["Lorem", "Ipsum"], ["Colo", "sit", "ame"], ["consecteur"] ] 我试着这样做: var arr = ["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"]; va

我有一系列:

["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"]
任务是在一个数组中创建一个组合长度为10个字符的数组,在本例中,组合长度如下:

[
  ["Lorem", "Ipsum"],
  ["Colo", "sit", "ame"], 
  ["consecteur"]
]
我试着这样做:

var arr = ["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"];
var combArr = [];
var charCount = 0;

for (i = 0; i < arr.length; i++) {
    charCount += arr[i].length;
    if (charCount <= 10) {
        combArr.push(arr[i]);
    }
    if (charCount > 10 && charCount <= 20) {
        combArr.push(arr[i]);
    }
    // ...
}   
var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var combArr=[];
var charCount=0;
对于(i=0;i如果(charCount 10&&charCount,这里是代码的更正版本:

var arr = ["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"];
var combArr = [];
var charCount = 0;
var currArr = []; // ADDED: the current list of words 

for (i = 0; i < arr.length; i++) {
    if (charCount && (charCount + arr[i].length > 10)) {
        // save list
        combArr.push(currArr);
        // ... and start new list
        currArr = [];
        charCount = 0;
     }
     charCount += arr[i].length;
     currArr.push(arr[i]);
}   
// finally add remaining list to result:
combArr.push(currArr);
var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var combArr=[];
var charCount=0;
var currArr=[];//添加:当前单词列表
对于(i=0;i10)){
//保存列表
组合推力(电流);
//…并开始新的列表
currArr=[];
字符数=0;
}
charCount+=arr[i]。长度;
电流推力(arr[i]);
}   
//最后将剩余列表添加到结果:
组合推力(电流);

以下是您的代码的更正版本:

var arr = ["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"];
var combArr = [];
var charCount = 0;
var currArr = []; // ADDED: the current list of words 

for (i = 0; i < arr.length; i++) {
    if (charCount && (charCount + arr[i].length > 10)) {
        // save list
        combArr.push(currArr);
        // ... and start new list
        currArr = [];
        charCount = 0;
     }
     charCount += arr[i].length;
     currArr.push(arr[i]);
}   
// finally add remaining list to result:
combArr.push(currArr);
var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var combArr=[];
var charCount=0;
var currArr=[];//添加:当前单词列表
对于(i=0;i10)){
//保存列表
组合推力(电流);
//…并开始新的列表
currArr=[];
字符数=0;
}
charCount+=arr[i]。长度;
电流推力(arr[i]);
}   
//最后将剩余列表添加到结果:
组合推力(电流);

您缺少的主要内容是:您需要创建新阵列,然后将这些多个阵列推送到父阵列中

举个例子,让你走

var container = [];
var child1 = [];
var child2 = [];

child1.push("foo");
child1.push("bar");

child2.push("baz");

container.push(child1);
container.push(child2);

console.log(container); // [["foo", "bar"], ["baz"]]

我将把问题的条件逻辑留给您,但这会让您克服障碍。祝您好运!

您缺少的主要内容是:您需要创建新数组,然后将这些多个数组推送到父数组中

举个例子,让你走

var container = [];
var child1 = [];
var child2 = [];

child1.push("foo");
child1.push("bar");

child2.push("baz");

container.push(child1);
container.push(child2);

console.log(container); // [["foo", "bar"], ["baz"]]
我将把手头问题的条件逻辑留给你,但这应该能让你克服这个障碍。祝你好运!

试试这个;(编辑)

var arr=[“1234567890”、“隐藏”、“参数”、“米”];
var结果=[];
var charCount=0;
var-temp=[];
对于(变量i=0;i10){
结果:推送(温度);
charCount=arr[i]。长度;
温度=[arr[i]];
}否则{
温度推力(arr[i]);
}
}
if(temp.length){results.push(temp);}
document.write(JSON.stringify(results))
试试这个;(编辑)

var arr=[“1234567890”、“隐藏”、“参数”、“米”];
var结果=[];
var charCount=0;
var-temp=[];
对于(变量i=0;i10){
结果:推送(温度);
charCount=arr[i]。长度;
温度=[arr[i]];
}否则{
温度推力(arr[i]);
}
}
if(temp.length){results.push(temp);}

document.write(JSON.stringify(results))
您可以尝试这样做

var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var MAX_LENGTH=10;
var finalArray=arr.reduce(函数(上、当前){
如果(上一个长度===0){
上推([当前]);
}否则{
var currentItemLength=prev[prev.length-1]。reduce(函数(iprev,icurr){
返回iprev+icurr.length;
}, 0);
if(当前项目长度+当前长度>最大长度){
上推([当前]);
}否则{
上一个[上一个长度-1]。推送(当前);
}
}
返回上一个;
}, []);

console.log(finalArray)
您可以尝试这样的方法

var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var MAX_LENGTH=10;
var finalArray=arr.reduce(函数(上、当前){
如果(上一个长度===0){
上推([当前]);
}否则{
var currentItemLength=prev[prev.length-1]。reduce(函数(iprev,icurr){
返回iprev+icurr.length;
}, 0);
if(当前项目长度+当前长度>最大长度){
上推([当前]);
}否则{
上一个[上一个长度-1]。推送(当前);
}
}
返回上一个;
}, []);

console.log(finalArray)
您可以通过在
combArr
中添加一级嵌套来修复代码,为每个新的“行”重置
charCount
,并在
arr
的第一个条目长度超过10个字符时通过将
|i==0
附加到您的if条件来处理该情况:

var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var combArr=[[]];
var charCount=0;
对于(i=0;iif(charCount您可以通过在
combArr
中添加一个更高级别的嵌套,为每个新的“行”重置
charCount
并在
arr
的第一个条目超过10个字符时通过在if条件中添加
| i==0
来处理代码:

var arr=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“Concerteur”];
var combArr=[[]];
var charCount=0;
对于(i=0;i如果(charCount此解决方案不适用于:

  • 输入数组的顺序不正确,以确保10个字符的完整配对,例如,它不能与[“hello”,“whatever”]的输入数组一起工作
  • 它不适合将数组项有条件地拆分为两个单独的数组。 例如[“你好”、“随便”]=[“你好”、“什么事”]、[“任何事”]]
  • 因此,根据提供的信息,您可以尝试以下方法:

    var inputArray = ["Lorem", "Ipsum", "Colo", "sit", "ame", "consecteur"];
        var tempArray = [];
        var finalArray = [];
        var charCount = 0;
    
        for (i = 0; i < inputArray.length; i++) {
    
            if ((charCount + inputArray[i].length) <= 10) {
    
                charCount += inputArray[i].length;
    
                tempArray.push(inputArray[i]);
    
                if (charCount == 10) {
                    finalArray.push(tempArray);
                    tempArray = [];
                    charCount = 0;
                }
            }
        }
    
        //push whatever remains is in tempArray to the final array.
        if (tempArray.length)
            finalArray.push(tempArray);
    
        document.write(JSON.stringify(finalArray))
    
    var-inputArray=[“Lorem”、“Ipsum”、“Colo”、“sit”、“ame”、“concerteur”];
    var tempArray=[];
    var finalArray=[];
    var charCount=0;
    对于(i=0;i