王培顺的博客&WangPeishun’s Blog

分类 胡思乱写 下的文章

字符串的首字母大写,不能使用:

  1. toUpperCase()
  2. toLowerCase()

例子:

"string".capitalize() === "String" "hello World".capitalize() === "Hello World" "i love codewars".capitalize() === "I love codewars" "This sentence is already capitalized".capitalize() === "This sentence is already capitalized" "0123the first character of this sentence is not a letter".capitalize() === "0123the first character of this sentence is not a letter"

这次依旧没有我的答案。
1.

String.prototype.capitalize = function () {
let c = this.charCodeAt(0);
if (97 <= c && c <= 122) c -= 32;
return String.fromCharCode(c) + this.slice(1);
}

2.

String.prototype.capitalize = function(){
var map = {
a : 'A',
b : 'B',
c : 'C',
d : 'D',
e : 'E',
f : 'F',
g : 'G',
h : 'H',
i : 'I',
j : 'J',
k : 'K',
m : 'M',
n : 'N',
o : 'O',
p : 'P',
q : 'Q',
r : 'R',
s : 'S',
t : 'T',
u : 'U',
v : 'V',
w : 'W',
x : 'X',
y : 'Y',
z : 'Z'
};
return map[this[0]] ? map[this[0]] + this.slice(1) : this.toString();
};

3.

String.prototype.capitalize = function() {
return this.replace(/^[a-z]/, c => String.fromCharCode(c.charCodeAt(0)-32))
}

4.

String.prototype.capitalize = function() {
return /^[a-z]/.test(this) ? this.replace(this.charAt(0), String.fromCharCode(this.charCodeAt(0) - 32)) :
this.toString();
}

5.

String.prototype.capitalize = function()
{
var searchArray = 'abcdefghijklmnopqrstuvwxyz';
var replaceArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var array = this.split('');
var index = searchArray.indexOf(array[0]);
if (index > -1) array[0] = replaceArray[index];
return array.join('');
}

6.

String.prototype.capitalize = function() {
var alf = 'abcdefghijklmnopqrstuvwxyz';
var alfC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var self = this.split('');
if (alf.indexOf(self[0]) != -1) {
self[0] = alfC[alf.indexOf(self[0])];
}
return self.join('');
}

7.

String.prototype.capitalize = function() {
if (this.charCodeAt(0) >= 97 && this.charCodeAt(0) <= 122) {
return (String.fromCharCode(this.charCodeAt(0) - 32) + this.slice(1));
}

return this.toString();
}

8.

String.prototype.capitalize = function() {
if (this.charCodeAt() < 97 || this.charCodeAt() > 122) return this.toString();
return String.fromCharCode(this.charCodeAt() - 32) + this.substring(1);
};

反向顺序输出字符串(单个单词不反向)

reverse('Hello World') === 'World Hello'
reverse('Hi There.') === 'There. Hi'

My Answer:

function reverse(string){
var mystr = string.split(' ');
var result = [];
for(var i =0;i<mystr.length;i++){
result[i] = mystr[mystr.length-1-i];
}
return result.join(' ');
}

Others:

1.

function reverse(string){
return string.split(' ').reverse().join(' ');
}

2.

reverse = s => s.split(' ').reverse().join(' ')

3.

function reverse(string){
var original = string;
var rev = original.split(' ').reverse().join(' ');
return rev;
}

4.

const reverse = words => words.split(' ').reverse().join(' ')

5.

function reverse(string){
return string.replace(/\s+/g, ' ').split(' ').reverse().join(' ');
}

6.

function reverse(string){
// validate input
if (typeof(string) !== 'string') throw new Error('reverse: parameter is not a string!');
// just use the dumb way out since it's jabbascripps
return string.split(' ').reverse().join(' ');
}

7.

function reverse(string){
if(typeof string === 'string')
{
var result = '';
string = string.split(' ');
for(var i = string.length ; i > 0; i--)
(i != 1 ? (result = result + string[i - 1] + ' '):(result = result + string[i - 1]));
}
return result;
}

字符串字母大小写反向输出
altERnaTIng cAsE <=> ALTerNAtiNG CaSe

这里分享的都是大家比较认可的几个方案:
1.

String.prototype.toAlternatingCase = function () {
return this.split("").map(a =&gt; a === a.toUpperCase()? a.toLowerCase(): a.toUpperCase()).join('')
}

2.

const isLowerCase = (char) =&gt; char.toLowerCase() === char;
const swapCase = (char) =&gt; isLowerCase(char) ? char.toUpperCase() : char.toLowerCase();

String.prototype.toAlternatingCase = function() {
return [...this].map(swapCase).join('');
};

3.

String.prototype.toAlternatingCase = function () {
return this.replace(/./g, function (match) {
return /[a-z]/.test(match) ? match.toUpperCase() : match.toLowerCase();
});
}

4.

String.prototype.toAlternatingCase = function () {
return this.replace(/[A-Za-z]/g, x =&gt; x &gt; "Z" ? x.toUpperCase() : x.toLowerCase())
}

5.

String.prototype.toAlternatingCase = function(){
return this.split("").map(letter =&gt; {
var newLetter = letter.toUpperCase();
return letter == newLetter ? letter.toLowerCase() : newLetter;
}).join("");
}

6.

String.prototype.toAlternatingCase = function () {
return this.replace(/[a-zA-Z]/g, function (ltr) {
return ltr === ltr.toUpperCase() ? ltr.toLowerCase() : ltr.toUpperCase();
});
};

7.

String.prototype.toAlternatingCase = function () {
return this.split('').map(i =&gt; {
if (/[a-z]/i.test(i)) {
return i.toUpperCase() === i ? i.toLowerCase() : i.toUpperCase();
} else {
return i;
}
}).join('');
}

8.

String.prototype.toAlternatingCase = function () {
new_str = "";
for(var i = 0; i &lt; this.length; i++) { if(this[i] === this[i].toUpperCase()) { new_str += this[i].toLowerCase(); } else { new_str += this[i].toUpperCase(); } } return new_str; } [/code] [code] String.prototype.toAlternatingCase = function () { return this.split('').map(function(x){ if(x &gt;= 'A' &amp;&amp; x &lt;= 'Z') return x.toLowerCase(); if(x &gt;= 'a' &amp;&amp; x &lt;= 'z') return x.toUpperCase();
return x;
}).join('');
}

9.

String.prototype.toAlternatingCase = function () {
var letter, idx = 0, alt ='';
while (idx &lt; this.length) { letter = this[idx]; if (letter === letter.toUpperCase()) { alt += letter.toLowerCase(); } else { alt += letter.toUpperCase(); } idx++; } return alt; }; [/code] [code] String.prototype.toAlternatingCase = function () {  return this.split('').map(char =&gt; char === char.toUpperCase() ? char.toLowerCase() : char.toUpperCase()).join('');
}

10.

String.prototype.toAlternatingCase = function () {
let isUpper = function(c) {
if(c === c.toUpperCase()) return true;
return false;
};

let out = '';
for(let i = 0; i &lt; this.length; ++i) {
if(isUpper(this[i])) {
out += this[i].toLowerCase();
}
else {
out += this[i].toUpperCase();
}
}
return out;
}

返回一个字符串中最短单词的字母数量。

例如:"bitcoin take over the world maybe who knows perhaps" ,返回3。

我的:

function mysort(a,b){
return a-b;
}
function findShort(s){
var shorNum =0;
var myarr = s.split(' ');
for(var i=0;i&lt;myarr.length;i++){
myarr[i] = myarr[i].length;
}
myarr.sort(mysort);
return myarr[0];
}

人家的:

1.

function findShort(s){
return Math.min.apply(null, s.split(' ').map(w =&gt; w.length));
}

2.

function findShort(s){
var arr = s.split(' ');
var smallest = arr[0];
for (var i = 0; i &lt; arr.length; i++) {
if(arr[i].length &lt; smallest.length){ smallest = arr[i]; } } return smallest.length; } [/code] [code] function findShort(s){ return Math.min(...s.split(" ").map (s =&gt; s.length));
}

3.

const findShort = (s) =&gt; s
.split(' ')
.sort((a, b) =&gt; b.length - a.length)
.pop()
.length;

昨天看了一个BBC的纪录片《未来的地球》(Future Earth)。

BBC的水准一直很高,是我们应该学习的。

通过这个纪录片,我了解一个几个数据:

  1. 甲烷的温室效应比二氧化碳高出20多倍。
  2. 畜牧业是甲烷产生的主要行业。牛体内产生的甲烷,5%是由放屁排放出来的,95%是通过鼻孔排放的。
  3. 四分之一的二氧化碳是火力发电产生的。
  4. 近250年终,地球气温升高1度。
  5. 全球气温升高1度,看似幅度不大,对自然生态的影响确实巨大,甚至是致命的。
  6. 5500万年前,出现过地球气温高3度的情况,引起一系列恶性循环,导致地球气温短时间内增加6度,海洋生物大量灭绝。地球通过10万年的时间才恢复。

科学家的几个预测:

  1. 到本世纪末年,全球气温比工业革命前要高3度。
  2. 自然灾害发生率比之前高出很多,百年一遇的灾害,可能会变成二十年一遇。
  3. 北冰洋将无冰,北极永久冻土层将解冻,微生物会分解冻土层理的有机物,进而转换成二氧化碳排放到大气层。
  4. “地球之肺”亚马逊雨林可能因干旱和山火而消失,变成热带草原。
  5. 温暖适宜的地中海气候将不再存在。
  6. 北极、南极冰川融化,海平面将升高,部分地势较低的国家和地区将消失。
  7. 南极陆地将露出冰面,缺少冰川的反射,陆地会吸收太阳光的大部分热量,导致地球问题上升。
  8. 剧烈的气候变化将失控,形成恶性循环,地球生态崩溃。
  9. 干旱、缺水、饥饿、冲突、动乱、文明崩塌等侵袭人类。

科学家的努力:

  1. 二氧化碳收集和存放。
  2. 人造肉,减少畜牧业。为动物服用“绿色抗生素”。
  3. 人造树,模拟植物吸收二氧化碳,但“人造树”不能分解二氧化碳,
  4. 冰岛的地热发电、伦敦的风力发电、西班牙的光伏发电,葡萄牙的潮汐发电、法国的核电站,印度的沼气发电。
  5. 中国上海的悬磁浮列车。
  6. 将建筑外观刷成白色,发射阳光。
  7. 向太空发射大量带有微型电脑的镜子发射阳光,为地球降温。造价太高,目前不现实。
  8. 将硫酸盐发射入大气中,形成一个发射层,从而达到降温效果。但可能对臭氧层等地球保护层产生一些不确定的影响。

科学家的研究方法:

  1. 深钻地下,分析冰层,土层的物质、元素含量。
  2. 对野生动物做跟踪研究。
  3. 对某种现象做原因分析。

我的不解:

  1. 有一条数据,中国每一个月就新增2个火力发电站。这个是真实的吗,我在媒体上看到的是中国政府一直在关停火力发电厂呀。
  2. 中国的光伏产业那么牛,为了人类未来,为了地球,你们欧美还搞什么壁垒?
  3. 北极熊应该是没有国籍吧,“近水楼台先得月”,谁有能力逮着它研究就能研究吗?

(完)

定义一个hello函数,参数传递名字时,返回hello,名字,参数为空时,返回hello,world。

hello "john" => "Hello, John!" 
hello "aliCE" => "Hello, Alice!" 
hello => "Hello, World!" # name not given 
hello ' ' => "Hello, World!" # name is an empty String

我的(我承认,是第二次做这个题目啦,自我感觉逻辑思维是硬伤!!!)

第一次:

function hello(name) { 
if (name != null){
if(name == ""){ return "Hello, World!"; }
else{ var array = name.toLowerCase().split(" "); 
for (i=0;i<array.length;i++) { 
array[i] = array[i][0].toUpperCase() + array[i].substring(1, array[i].length); } 
var string = array.join(" "); 
return "Hello, "+ string +"!"; } 
} 
else { return"Hello, World!"; } 
}

第二次:

function hello(name) { 
if(name){ 
var say = name.substr(0,1).toUpperCase()+name.substring(1).toLowerCase(); return "Hello, "+say+"!"; }
else{ return 'Hello, World!'; } 
}

人家的:

function hello(name){ 
if (name){ return "Hello, " + name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase() + '!'; } else { return "Hello, World!"; } 
}

function hello(name) { 
if (name === undefined || name === '') { return 'Hello, World!'; } 
else { return 'Hello, ' + name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase() + '!'; } 
} 

function hello(name) {
if (!(name)) { return 'Hello, World!'; } 
else { name = name.replace(name.charAt(0), name.charAt(0).toUpperCase()); name = name.replace(name.charAt(name.length - 1), name.charAt(name.length - 1).toLowerCase()); } 
return 'Hello, ' + name +'!'; 
} 

function hello(name = "World") { 
if (!name) name = "World" return "Hello, " + name.charAt(0).toUpperCase() + name.slice(1).toLowerCase() + "!"; 
}


判断n是不是正整数若是整数求和。

函数f(n)

function f(n) { return (parseInt(n) === n && n > 0) ? n*(n+1)/2 : false; }; 

function f(n) { return Number.isInteger(n) && n > 0 ? n * (n + 1) / 2 : false; };

function f(n) { if(typeof n != 'number' || n <= 0 || Math.floor(n) != n) return false; return n * (n + 1) / 2; };

function f(n) { if(isNaN(n) || n <= 0 || ~~n !== n) return false; var x = 0; while(n>0) { x += n; n--; } return x; };

最近玩编程游戏觉得很有意思,个人觉得有两款值得为新手推荐。

1.CodeCombat。www.codecombat.cn

2.Codewars。   www.codewars.com

自己觉得codewars低级别的题目都比较难。值得自己去学习,这里在今后一段时间可能会list几个题目来强化记忆。


编写accum函数,实现如下功能:

accum(“abcd”) –> “A-Bb-Ccc-Dddd”

accum(“RqaEzty”) –> “R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy”

accum(“cwAt”) –> “C-Ww-Aaa-Tttt”

我的函数:

function accum(s) {
var start_str = s;
var resurt_str = "";
for(var i=0;i<start_str.length;i++){
var mystr = start_str.substr(i,1).toUpperCase();
for(var j=i;j>0;j--){
mystr += start_str.substr(i,1).toLowerCase();
}
if(i != start_str.length-1){
mystr += '-';
}
resurt_str += mystr;
}
return resurt_str;
}

人家的函数

function accum(str) {

var letters = str.split(“ ”);
var result = [];
for (var i = 0; i < letters.length; i++) {
result.push(letters[i].toUpperCase() + Array(i + 1).join(letters[i].toLowerCase()));
}
return result.join('-');
}

 

到了年底,闲暇下来,心里就不自主地要做一个总结。

想来可能从小到大,每逢年底,都会有考试在“总结”自己。

工作以后,年底也就成了写各种总结的时间。

时间长了,“总结”自己也就成了一种习惯。


2016年,感觉很忙,一直在忙。

2016年,感觉有点累,心理上的和生理上的。

2016年,最大的收获,就是家里多了一口人。

2016年,最大的遗憾,自己还是原来的自己。

2016年,最高兴的事,身体没出大毛病。

2016年,最不高兴的事,自己还是那么不上进。

2016年,好像就做了两门课,还累得半死。

2016年,好像一直在突击,各种临时任务。

2016年,没有读几本书。

2016年,刷了太多时间的手机。

2016年,买了很多视频类的视频教程,大部分还没有看完。

2016年,应该做更多的笔记和读后感。


2017年,一定会发生很多事情,努力做好自己。

生活之不易,就像爬山,举步维艰。

幸有亲人、朋友的帮助。

不要认为别人对你的好是理所当然,

没有谁生来就欠你的,包括你的父母。

我们要有上进心,要多折腾,

但前提是折腾自己,并不是折腾自己的亲人朋友。

对现已拥有的要珍惜,

对向往已久的要敬重。

对自己施以帮助的人要牢记,

不做吃着奶又骂娘的白眼狼。

对需要帮助的人尽量给予支持,

没钱可以出点力。

照顾好自己的身体,经营好自己的生活,

不但要跟上面比,还要往下面看。


年龄越大,感觉自己的屁话越多......