如何垂直打印数组中的字符串元素?

时间:2018-12-14 18:55:21

标签: javascript php arrays

我有一个数组,我想垂直打印每个元素。 例如:

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中执行相同的任务时遇到了麻烦。有什么建议么?

7 个答案:

答案 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