mycode
function filter_list(l) {
var arr2 =[];//arr2=new Array();
for(var i=0;i<l.length;i++){
if(typeof(l[i])=="number"){
arr2.push(l[i]);
}
}
return arr2;
// Return a new array with the strings filtered out
}
bestcode
function filter_list(l) {
return l.filter(function(v) {return typeof v == 'number'})
}
filter方法
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
array.filter(function(currentValue,index,arr), thisValue)
和map()类似,Array的filter()也接收一个函数
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
return x % 2 !== 0;
});
mycode(其实就是等差数列求和。。。)
function GetSum( a,b )
{
let min = Math.min(a,b);
let max = Math.max(a,b);
return (max+min)*(max-min+1)/2;
}
bestcode
const GetSum = (a, b) => {
let min = Math.min(a, b),
max = Math.max(a, b);
return (max - min + 1) * (min + max) / 2;
}
let 和 const参考:http://es6.ruanyifeng.com/#docs/let
SymbolTest
Test.assertEquals(DNAStrand("AAAA"),"TTTT","String AAAA is");
Test.assertEquals(DNAStrand("ATTGC"),"TAACG","String ATTGC is");
Test.assertEquals(DNAStrand("GTAT"),"CATA","String GTAT is");
DNAStrand ("ATTGC") # return "TAACG"
DNAStrand ("GTAT") # return "CATA"
myCode:Time: 633ms
function DNAStrand(dna){
trans="";
for(let i=0;i<dna.length;i++){
switch (dna[i]){
case 'A': trans+='T';break;
case 'C': trans+='G';break;
case 'T': trans+='A';break;
case 'G': trans+='C';break;
}
}
return trans;
}
bestCode:Time: 673ms 牛批的解题方式
function DNAStrand(dna) {
return dna.replace(/./g, function(c) {
return DNAStrand.pairs[c]
})
}
DNAStrand.pairs = {
A: 'T',
T: 'A',
C: 'G',
G: 'C',
}
笔记:
1.
DNAStrand.pair ={}
给DNAStrand添加一个pairs属性
describe("KataTests", function(){
it("exampleTests", function(){
Test.assertEquals(findMissingLetter(['a','b','c','d','f']), 'e');
Test.assertEquals(findMissingLetter(['O','Q','R','S']), 'P');
});
});
mycode
function findMissingLetter(array)
{
for(let i=0;i<array.length;i++)
if((array[i].charCodeAt()+1)!=array[i+1].charCodeAt())
return String.fromCharCode(array[i].charCodeAt()+1)
}
bestcode(感觉一般般)
function findMissingLetter(array) {
let first = array[0].charCodeAt(0)
for (let i = 1; i < array.length; i++) {
if (first + i !== array[i].charCodeAt(0)) {
return String.fromCharCode(first + i)
}
}
throw new Error("Invalid input")
}
笔记:
String.fromCharCode()//返回ascii码对应的字符
str.charCodeAt(position)//返回str字符对应的ASCII
array[i].charCodeAt()={var str="";str.charCodeAt(i);}
mycode
function order(words){
//bubble sort
console.log("code start")
let arr_words=words.split(" ");
let temp=[];
for(let i=0;i<arr_words.length-1;i++)
for(let j=0;j<arr_words.length-1-i;j++)
if(arr_words[j].replace(/[^0-9]/ig,"")>arr_words[j+1].replace(/[^0-9]/ig,""))
{
temp=arr_words[j];
arr_words[j]=arr_words[j+1];
arr_words[j+1]=temp;
}
return arr_words.join(" ");
}
bestcode(挫败感,一定要多使用js的方式,return可以返回多个,正则表达式还没学)
function order(words){
return words.split(' ').sort(function(a, b){
return a.match(/\d/) - b.match(/\d/);
}).join(' ');
}
mycode
function SeriesSum(n)
{
let sum=0;
for(let i=1;i<=n;i++)
sum += 1/(3*i-2);
return(sum.toFixed(2))
}
bestcode
function SeriesSum(n) {
for (var s = 0, i = 0; i < n; i++) {
s += 1 / (1 + i * 3)
}
return s.toFixed(2)
}
笔记:xxx.toFixed(2)属性将xxx强制转换为两位小数1->1.00 1.1111->1.11
您将获得一个整数数组。
你的工作是获取该数组并找到一个索引N,其中N左边的整数之和等于N右边的整数之和。如果没有索引可以实现这一点,则返回 -1。
Test.describe("FindEvenIndex", function() {
Test.it("Tests", function() {
Test.assertEquals(findEvenIndex([1,2,3,4,3,2,1]),3, "The array was: [1,2,3,4,3,2,1] \n");
Test.assertEquals(findEvenIndex([1,100,50,-51,1,1]),1, "The array was: [1,100,50,-51,1,1] \n");
Test.assertEquals(findEvenIndex([1,2,3,4,5,6]),-1, "The array was: [1,2,3,4,5,6] \n");
Test.assertEquals(findEvenIndex([20,10,30,10,10,15,35]),3, "The array was: [20,10,30,10,10,15,35] \n");
});
mycode
function findEvenIndex(arr)
{
arr.unshift(0);
console.log(arr)
let sum1=0
for( let index=1;index<arr.length;index++)
{
let sum2=0;
sum1 += arr[index-1];
for(let j=index;j<arr.length-1;j++)
sum2 += arr[j+1];
if(sum1==sum2)
return index-1
if(index>arr.length-2)
return -1
}
}
bestcode
function findEvenIndex(arr)
{
for(var i=1; i<arr.length-1; i++) {
if(arr.slice(0, i).reduce((a, b) => a+b) === arr.slice(i+1).reduce((a, b) => a+b)) {
return i;
}
}
return -1;
}