对不起,我是javascript的新手
我当前的输出,来自用户输入'多么美好的一天':
what
abea
utif
ulda
y
如何获取每个单词的第一个字母以获得这样的输出:
wauuy hbtl aeid tafa
我试过了:
var output = '';
var counter = 0;
var newStr2 = newStr.split('\n');
for (let i = 0; i < newStr2.length; i++) {
output = output + newStr2[counter].substr(0,1)
counter++
}
有没有办法可以读取行和列?那样我就可以拿到每一行的第一个字母然后列
感谢。
答案 0 :(得分:1)
您可以使用两个for循环。一个用于单词中的每个字母,一个用于数组的每个元素(没有单词)。
var newStr = `what
abea
utif
ulda
y`
var output = '';
var newStr2 = newStr.split('\n');
for(var j = 0; j < newStr2[0].length; j++) {
for (let i = 0; i < newStr2.length; i++) {
if(newStr2[i][j]) {
output = output + newStr2[i][j];
}
}
output += ' ';
}
console.log(output);
&#13;
更新:
if条件是检查某个单词是否具有该字符。例如,最后一个单词只包含一个字符(y)。因此,在新输出中,它为其他地方打印undefined
。因此,我们检查该单词是否包含该索引中的字符,如果不是忽略。检查以下代码,您将更好地理解。
var newStr = `what
abea
utif
ulda
y`
var output = '';
var newStr2 = newStr.split('\n');
for(var j = 0; j < newStr2[0].length; j++) {
for (let i = 0; i < newStr2.length; i++) {
output = output + newStr2[i][j];
}
output += ' ';
}
console.log(output);
&#13;
答案 1 :(得分:0)
使用正则表达式将输入的每个第4个字符(无空间)拆分为数组,然后使用reduce
将它们组合在一起:
function transform(input) {
const wordCount = input.split(' ').length;
const chunked = input.replace(/ /g, '')
.match(new RegExp('\\w{1,' + wordCount + '}', 'g'));
const output = chunked.reduce((accum, chunkWord) => {
[...chunkWord].forEach((char, i) => (
accum[i] = (accum[i] || '') + char
));
return accum;
}, {});
return output;
}
console.log(transform('what a beautiful day'));
console.log(transform('foo foo bar bar'));
console.log(transform('fooo bar baz'));
&#13;