【问题标题】:how to convert to upper case an array with plain ECMAscript5 just using while loop?如何仅使用while循环将带有纯ECMAscript5的数组转换为大写?
【发布时间】:2018-05-24 12:16:36
【问题描述】:

我必须做这个简单的练习,但我真的很努力。我必须将所有名称转换为大写并将其传递给空数组,只使用 while 循环,我不能使用任何方法,只是普通的 javascript 5:

var names = ['rob', 'dwayne', 'james', 'larry', 'steve'];

var UpperCase = [];

我尝试过这样的对象(仍然有一些错误,这只是一个想法):

var change = {
  "mary":"MARY",
  "john":"JOHN",
  "james":"JAMES",
  "anna":"ANNA",
  "jack":"JACK",
  "jeremy":"JEREMY",
  "susanne":"SUSANNE",
  "caroline":"CAROLINE",
  "heidi":"HEIDI"
}
for(var key in change) {
  var obj = change[key];

  for (var prop in obj) {
  var value = obj[prop];
}
}

while(names[i]===change.key) {
  for(var i=0; i<names.length; i++) {
  UpperCase = change.value[i];
} }

我希望有人能帮我解决这个问题。

谢谢!

【问题讨论】:

  • I can't use any method...喜欢??????????
  • toUpperCase 是纯 javascript
  • 基本上不可能回答这个问题,因为你没有清楚地表达这个练习的局限性。我假设说明写在某处。您能与我们分享它们而不是给我们一个淡化的版本吗?
  • w3schools.com/jsref/jsref_obj_string.asp 这是一个链接,将为您打开一些新世界

标签: javascript arrays ecmascript-5 uppercase


【解决方案1】:

而不是使用 toUppercase():

用这个检查一个字符是大写还是小写

str[i].charCodeAt(0) > 96

charCodeAt

fromCharCode

暂时使用

var i = 0;
while (i < str.length) ...

不使用数组的推送功能

 UPPERCASE[UPPERCASE.length] = uppercase(names[i]);

希望这个功能对你有帮助

function uppercase(str) {
  var i = 0;
  var output = "";
  while (i < str.length) {
    var x =
      (str[i].charCodeAt(0) > 96)
        ? String.fromCharCode(str[i].charCodeAt(0) - 32)
        : String.fromCharCode(str[i].charCodeAt(0));
    output += x;
    i++;
  }
  return output;
}

例子:

function uppercase(str) {
  var i = 0;
  var output = "";
  while (i < str.length) {
    var x =
      (str[i].charCodeAt(0) > 96) ?
      String.fromCharCode(str[i].charCodeAt(0) - 32) :
      String.fromCharCode(str[i].charCodeAt(0));
    output += x;
    i++;
  }
  return output;
}
var UPPERCASE = [];
var names = ["rOb", "dwayne", "james", "larry", "steve"];

var i = 0;

while (i < names.length) {
  UPPERCASE[UPPERCASE.length] = uppercase(names[i]);
  i++;
}

console.log(UPPERCASE);

更新

没有函数和线性条件的答案

var UPPERCASE = [];
var names = ["rOb", "dwayne", "james", "larry", "steve"];

var i = 0;

while (i < names.length) {
  var j = 0,
    output = "",
    str = names[i];
  while (j < str.length) {
    var x;
    if (str[j].charCodeAt(0) > 96) {
      x = String.fromCharCode(str[j].charCodeAt(0) - 32);
    } else {
      x = String.fromCharCode(str[j].charCodeAt(0));
    }
    output += x;
    j++;
  }
  UPPERCASE[UPPERCASE.length] = output;
  i++;
}

console.log(UPPERCASE);

【讨论】:

  • 那是个好伙伴!你能在不创建函数的情况下做到这一点吗?至于“?”和“:”它们像 if 语句吗?我还不认识他们
【解决方案2】:

您需要创建一个增量 (i),以便您的 while 循环知道何时停止。对于 for 循环来说这是一个更好的情况,但 while 循环也可以。

var names = ['rob', 'dwayne', 'james', 'larry', 'steve']
var i = 0
var result = []

while (i < names.length) {
  result.push(names[i].toUpperCase())
  i++ 
}

console.log(result)

【讨论】:

  • 谢谢,但我想要一些不使用 .toUpperCase 和 .push 等方法的东西
【解决方案3】:

你应该在地图中使用处理函数:

var names = ['rob', 'dwayne', 'james', 'larry', 'steve'];
var UpperCase = names.map(function(x){ return x.toUpperCase() });

【讨论】:

【解决方案4】:

对@andrewgi 的回答稍作改进:

var names = ['rob', 'dwayne', 'james', 'larry', 'steve']
var i = 0
var result = []

while (i < names.length) {
  result.push(names[i].toUpperCase())
  i++ 
}

console.log(result)

我在names.length 检查后删除了+1,并用正确的驼峰式拼写toUpperCase。

【讨论】:

  • 我在您发布之前的编辑中做到了这一点。你的完全是我的复制品。
  • 我一定是在你编辑的时候回答的。我认为downvote有点苛刻。很抱歉让你不高兴了。
  • 谢谢,但我想要一些不使用 .toUpperCase 和 .push 等方法的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2015-12-13
  • 2015-02-16
  • 1970-01-01
  • 2018-03-19
  • 2019-01-04
  • 1970-01-01
相关资源
最近更新 更多