我有一个数组,我想垂直打印每个元素。 例如:
echo "<select name=\"charge\">";
$strJsonFileContents = file_get_contents("./includes/laws.json");
$laws = json_decode($strJsonFileContents, true);
foreach ($laws as $law) {
echo '<option name="law" value="' . $law['fine'] . '">' . $law['law'] . '</option>';
}
echo "</select><br><br>";
输出应为:
a d g
b e h
c f i
我已经通过使用2 for循环在php中做到了这一点,但是在JS中执行相同的任务时遇到了麻烦。有什么建议么?
答案 0 :(得分:2)
可能的解决方案,带有两个循环。然后,您可以将其放到某些文本区域或任何您喜欢的区域中。
const myArr = ['abc', 'def','ghi'];
const r = myArr.map((elem, i) => elem.split('').map((_, a) => myArr[a][i]).join(' ')).join('\n');
console.log(r);
答案 1 :(得分:1)
您可以使用Array.from
进行迭代,在这种情况下,它会将字符串拆分为多个字符,并可以使用映射函数进行进一步处理,这在此需要转置字符串。
var array = ['abc', 'def','ghi'],
result = array
.reduce((r, s, j) => Array.from(s, (c, i) => (r[i] || '') + c), [])
.join('\n');
console.log(result);
答案 2 :(得分:0)
我想出了类似的东西:
RichText(
text: TextSpan(
text: '$labelText *',
style: TextStyle(
color: labelColor, fontWeight: fontWeight, fontSize: fontSize)),
textScaleFactor: labelTextScale,
maxLines: labelMaxLines,
overflow: overflow,
textAlign: textAlign,
);
答案 3 :(得分:0)
您可以将它们分解为数组中的各个元素(例如[“ a”,“ b”,“ c”,“ d” ...]),然后转置结果数组。
答案 4 :(得分:0)
const ary = ['abc', 'def','ghi'];
for (i = 0; i < ary.length; i++) {
const x = ary.map((ary) => ary[i]).join('')
console.log(x)
}
答案 5 :(得分:0)
您可以这样做
let myArr = ['abc', 'def','ghi'];
let op = new Array(myArr.length).fill('')
for(let i=0;i<myArr.length;i++){
for(let j=0;j<myArr[i].length;j++){
op[j] += myArr[i][j]+' ';
}
}
let finalOp = op.reduce((op,cur)=>{
return op+=cur+`\n`;
},'')
console.log(finalOp);
答案 6 :(得分:0)
选中此JS函数可以为您提供帮助,您需要拆分数组元素的每个单词:
function printArraySplitedLines(collection){
collection.forEach(function(elementCollection) {
let line = "";
elementCollection.split('').forEach(function(item) {
line += `${item} `;
})
console.log(line);
});
}
printArraySplitedLines(myArr);
// a b c
// d e f
// g h i