在操作值后返回连接数组

时间:2018-03-12 18:21:38

标签: javascript arrays join

function titleCase(str) {
  var words = str.split(" ");
  var capsOn = "";
  var titleArray = [];
  
  for (var i = 0; i < words.length; i++) {
    
    capsOn = words[i].substring(0,1).toUpperCase() + words[i].substring(1).toLowerCase();
    
    
   
  }
  
  return titleArray.join(" ");
  
}


titleCase("I'm a little tea pot");

我只是坚持使用 titleArray capsOn (具有将数组中的每个元素首字母转换为大写的功能)的一行代码>(应该返回所有加入的capsOn的值以再次形成整个句子)

3 个答案:

答案 0 :(得分:1)

您需要将大写单词推入数组titleArray

function titleCase(str) {
  var words = str.split(" ");
  var titleArray = [];
  
  for (var i = 0; i < words.length; i++) {
  //           +--- Right here!
  //           |    
  //           v
    titleArray.push(words[i].substring(0,1).toUpperCase() + words[i].substring(1).toLowerCase());
  }
  
  return titleArray.join(" ");
  
}


console.log(titleCase("I'm a little tea pot"));

使用正则表达式和ES6功能的替代方法(传播语法和解构分配):

function titleCase(str) {
  var words = str.split(/\s+/g);
  for (var i = 0; i < words.length; i++) {
    var [letter, ...rest] = words[i].split('');    
    words[i] = letter.toUpperCase() + rest.join('').toLowerCase();
  }
  
  return words.join(" ");  
}

console.log(titleCase("I'm a                little tea pot"));

使用函数replace并保持原始结构的替代方法:

function titleCase(str) {
  return str.replace(/\S*(.*?)\S+/g, function(word) {
    var [letter, ...rest] = word.trim().split('');   
    var spaces = word.match(/\s+/g).join('');
    return spaces + letter.toUpperCase() + rest.join('').toLowerCase()
  });
}

console.log(titleCase("       I'm a                little tea        pot       "));

答案 1 :(得分:0)

您可以使用map功能实现此目的,在split string后,它变为Array,然后您可以使用map更改每个Array的值为新值

const titleCase = (str) => str.split(" ").map(
    element => element.substring(0, 1).toUpperCase() + element.substring(1)
  ).join(" ");

const result = titleCase(teapot);
console.log(result) //I'm A Little Tea Pot

答案 2 :(得分:0)

首先,您最好知道包含对象\ strings \ array \ etc

上大多数基本函数的these methods from the Lex SDK库。

在你的情况下,lodash是lodash函数,它返回单词的大写版本

  

FRED - &gt;佛瑞德

     

fred - &gt;佛瑞德

第二,你最好使用.map功能,它更清楚。 试试看:

function randommonth() {
  var tbl="janvier,février,mars,avril,mai,juin,juillet,août,septembre,novembre,décembre".split(',');
  var mes = tbl[Math.floor(Math.random()*tbl.length)];
  document.getElementById('mois').innerHTML = mes;
}
祝你好运!