Javascript不必要的压缩数组操作
Javascript Unnecessarily Compact Array Operations
所以,据我所知,因为我喜欢从不同的角度看待事物。。。我有下面的Javascript代码,对于这个问题的意图和目的,它只会接收到格式如下的字符串:"wordone-wordtwo":
function inName(inputName) {
return inputName.split(" ")[1].toUpperCase();
}
然而,这只返回了我想要的一半("WORDTWO")。我希望返回原始字符串,只做一个更改:通过toUpperCase()返回的以空格分隔的第二个单词;然后重新连接到未被触碰的第一个单词。我还想不必要地在返回线上运行所有操作。我的大脑认为这是可能的,考虑到编译器如何从左到右读取行,并根据解决的问题对可用的成员函数进行调整。Javascript中的所有内容都是一个对象,对吗?为了我自己的好奇心帮助我,或者用我自己的误解来抨击我。以下是使用"正常"语句解决上述问题的版本:
function inName(inputName) {
var nameArray=inputName.split(" ");
nameArray[1]=nameArray[1].toUpperCase();
return nameArray.join(" ");
}
一行substr
、indexOf
和一个动态变量;-)
function inName(inputName) {
return inputName.substr(0, (index = inputName.indexOf(' '))) + inputName.substr(index).toUpperCase();
}
这里有另一个避免正则表达式的选项:
function inName(inputName) {
return inputName.split(' ').map(function(v,i){return i?v.toUpperCase():v;}).join(' ');
}
这与原始代码执行相同的拆分,然后将部分映射到一个函数,该函数返回索引0处的值不变,但索引1处的值为大写。然后用一个空格将这两个结果连接在一起。
正如其他人所说,在实践中,一个更长、更清晰的版本比试图想出一个聪明的一句话要好。在return语句中定义函数感觉就像作弊;-)
类似的东西似乎属于Code Golf,但我的看法是:
function inName(inputName) {
return inputName.replace(/ .*/,function(m) {return m.toUpperCase();});
}
有趣。以下是我对问题的看法
function justDoIt(str){
return [str = str.split(" ") , str.pop().toUpperCase()].join(" ");
}
创建一个新数组,str被拆分并重新分配为一个数组,新数组的第一个项目,然后第二个新数组项目弹出最后一个单词,使其大写,并将其放入新数组中。然后加入数组[["wordOne"],"WORDTWO"].join(" ")
相关文章:
- 将数组对象传递到struts2中的操作类
- 响应应包含一个对象,但得到的却是GET操作的数组
- Var工作,但在使用数组执行相同操作时停止
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 使用纯JavaScript或Lodash的JSON数组操作
- JavaScript 数组操作,使任何索引作为变量来获取值
- 数组操作 java 脚本
- JavaScript 中的 Web 服务调用和 JSON 数组操作
- JavaScript 数组操作以删除奇数数组元素
- 不允许对链接函数的元素参数进行数组操作
- Javascript布尔数组操作
- 数组操作到新的数组对象中
- JSON对象创建和JSON数组操作
- Javascript不必要的压缩数组操作
- 对象数组的下划线数组操作
- Mongodb findone返回值-数组操作
- 字符串的用法[.]数组操作
- 最佳mongodb数组操作的性能
- Javascript数组操作——是否有更声明性的方法?
- 如何将.reduce函数生成的数组操作为单独的键/值对?(JavaScript)