在 coldfusion 中打印 1 到 9 的矩阵
print a matrix by 1 to 9 in coldfusion
如何在 coldfusion 中打印一个矩阵,如 3*3 矩阵,我是 coldfusion 新手,num = [1,2,3,4,5,6,7,8,9];这是我的数组,如何通过编程方式按 3 行和 3 列打印此数组。矩阵输出是
`
1 4 7
2 5 8
3 6 9
`
如何在 coldfusion
中创建这样的矩阵
我们仍然不知道您是如何存储矩阵数据的。因此,我正在创建一个存储矩阵数据的方法的简单示例以及如何在 HTML 中输出它。这只是我如何做的一个例子,但可能还有其他方法。
存储矩阵数据:首先,您需要将矩阵的所有数据存储在这样一种方式中,以便您可以轻松地迭代(循环)所有值,即能够逐行逐列地直接寻址每个值。正如@James A Mohler 已经评论的那样,用于此类任务的常见做法是 Array of Arrays。这些只是存储在数组中的数组!
作为cfscript的代码示例以获得更好的解释:
<cfscript>
// create empty matrix array to store a matrix
myMatrix2DArray=[];
// setting the values row by row with
// myMatrix2DArray[rowIndex]=[ valueOfColumn1, valueOfColumn2, valueOfColumn3];
myMatrix2DArray[1]=[1,4,7];
myMatrix2DArray[2]=[2,5,8];
myMatrix2DArray[3]=[3,6,9];
writedump( var=myMatrix2DArray, label="example1" );
</cfscript>
相同数据的隐式存储方式:
<cfscript>
//setting multidimensional array (2D) fully implicitly (example 2)
myMatrix2DArray=[
[1,4,7],
[2,5,8],
[3,6,9]
];
writedump( var=myMatrix2DArray, label="example2" );
</cfscript>
正如您从上面的示例中看到的那样,矩阵将每一行存储在一个数组(维度 1)和一个用于列值的附加数组(维度 2)中:因此 Array of Arrays - 在我们的示例中,它是一个二维数组。
因为您更新了您的问题,以一维数组的形式向我们提供数据,所以我会先将其转换为这样的二维数组。
经典方式使用for循环:
<cfscript>
//using classic for loop:
initialArray=[1,4,7,2,5,8,3,6,9];
row=[];
myMatrix2DArray=[];
arrayIndex=1;
for( element in initialArray ){
if( arrayIndex mod 3 == 0 ){
//append last element;
row.append( element );
myMatrix2DArray.append( row );
//reset row and return acc with 1;
row=[];
arrayIndex=1;
}else{
row.append( element );
arrayIndex++;
}
}
</cfscript>
使用arrayReduce()
函数的新方式(我这里使用的是成员函数):
<cfscript>
// using arrayReduce() member function
initialArray=[1,4,7,2,5,8,3,6,9];
row=[];
myMatrix2DArray=[];
initialArray.reduce(
( acc, element ) => {
if( acc mod 3 == 0 ){
//append last element;
row.append( element );
myMatrix2DArray.append( row );
//reset row and return acc with 1;
row=[];
return 1;
}else{
row.append( element );
return acc+1;
}
}, 1 );
writedump( var=myMatrix2DArray, label="example3" );
</cfscript>
将矩阵数据输出为 HTML:将数据存储为二维数组,我们可以轻松地遍历所有值以将数据输出为表格数据在 HTML table 中如下:
<cfscript>
// output style for better view
writeOutput("<style>table,th,td{border:1px dotted gray;}</style>");
// output table body and header
writeOutput("<table><tbody>");
writeOutput("<tr><th>Column1</th><th>Column2</th><th>Column3</th></tr>");
for( row in myMatrix2DArray ){
//open new table row
writeOutput("<tr>");
for( column in row ){
writeOutput("<td>#column#</td>");
}
//close table row
writeOutput("</tr>");
}
writeOutput("</tbody></table>");
</cfscript>
这种方法的优点 是您可以轻松访问一个特定的
通过简单地引用行索引和列索引来获取矩阵数组的值:
myMatrix2DArray[row][colum]
如下:
<cfscript>
writeOutput("<div>Value for Row=2 and Column=3: <strong>#myMatrix2DArray[2][3]#</strong></div>");
writeOutput("<div>Value for Row=3 and Column=1: <strong>#myMatrix2DArray[3][1]#</strong></div>");
</cfscript>
如何在 coldfusion 中打印一个矩阵,如 3*3 矩阵,我是 coldfusion 新手,num = [1,2,3,4,5,6,7,8,9];这是我的数组,如何通过编程方式按 3 行和 3 列打印此数组。矩阵输出是 `
1 4 7
2 5 8
3 6 9
` 如何在 coldfusion
中创建这样的矩阵我们仍然不知道您是如何存储矩阵数据的。因此,我正在创建一个存储矩阵数据的方法的简单示例以及如何在 HTML 中输出它。这只是我如何做的一个例子,但可能还有其他方法。
存储矩阵数据:首先,您需要将矩阵的所有数据存储在这样一种方式中,以便您可以轻松地迭代(循环)所有值,即能够逐行逐列地直接寻址每个值。正如@James A Mohler 已经评论的那样,用于此类任务的常见做法是 Array of Arrays。这些只是存储在数组中的数组!
作为cfscript的代码示例以获得更好的解释:
<cfscript>
// create empty matrix array to store a matrix
myMatrix2DArray=[];
// setting the values row by row with
// myMatrix2DArray[rowIndex]=[ valueOfColumn1, valueOfColumn2, valueOfColumn3];
myMatrix2DArray[1]=[1,4,7];
myMatrix2DArray[2]=[2,5,8];
myMatrix2DArray[3]=[3,6,9];
writedump( var=myMatrix2DArray, label="example1" );
</cfscript>
相同数据的隐式存储方式:
<cfscript>
//setting multidimensional array (2D) fully implicitly (example 2)
myMatrix2DArray=[
[1,4,7],
[2,5,8],
[3,6,9]
];
writedump( var=myMatrix2DArray, label="example2" );
</cfscript>
正如您从上面的示例中看到的那样,矩阵将每一行存储在一个数组(维度 1)和一个用于列值的附加数组(维度 2)中:因此 Array of Arrays - 在我们的示例中,它是一个二维数组。
因为您更新了您的问题,以一维数组的形式向我们提供数据,所以我会先将其转换为这样的二维数组。
经典方式使用for循环:
<cfscript>
//using classic for loop:
initialArray=[1,4,7,2,5,8,3,6,9];
row=[];
myMatrix2DArray=[];
arrayIndex=1;
for( element in initialArray ){
if( arrayIndex mod 3 == 0 ){
//append last element;
row.append( element );
myMatrix2DArray.append( row );
//reset row and return acc with 1;
row=[];
arrayIndex=1;
}else{
row.append( element );
arrayIndex++;
}
}
</cfscript>
使用arrayReduce()
函数的新方式(我这里使用的是成员函数):
<cfscript>
// using arrayReduce() member function
initialArray=[1,4,7,2,5,8,3,6,9];
row=[];
myMatrix2DArray=[];
initialArray.reduce(
( acc, element ) => {
if( acc mod 3 == 0 ){
//append last element;
row.append( element );
myMatrix2DArray.append( row );
//reset row and return acc with 1;
row=[];
return 1;
}else{
row.append( element );
return acc+1;
}
}, 1 );
writedump( var=myMatrix2DArray, label="example3" );
</cfscript>
将矩阵数据输出为 HTML:将数据存储为二维数组,我们可以轻松地遍历所有值以将数据输出为表格数据在 HTML table 中如下:
<cfscript>
// output style for better view
writeOutput("<style>table,th,td{border:1px dotted gray;}</style>");
// output table body and header
writeOutput("<table><tbody>");
writeOutput("<tr><th>Column1</th><th>Column2</th><th>Column3</th></tr>");
for( row in myMatrix2DArray ){
//open new table row
writeOutput("<tr>");
for( column in row ){
writeOutput("<td>#column#</td>");
}
//close table row
writeOutput("</tr>");
}
writeOutput("</tbody></table>");
</cfscript>
这种方法的优点 是您可以轻松访问一个特定的
通过简单地引用行索引和列索引来获取矩阵数组的值:
myMatrix2DArray[row][colum]
如下:
<cfscript>
writeOutput("<div>Value for Row=2 and Column=3: <strong>#myMatrix2DArray[2][3]#</strong></div>");
writeOutput("<div>Value for Row=3 and Column=1: <strong>#myMatrix2DArray[3][1]#</strong></div>");
</cfscript>