functionsumAll(arr) { const a =Math.max(arr[0],arr[1]); const b =Math.min(arr[0],arr[1]); let sum = 0; for(let i = b;i <= a;i++){ sum +=i; } return sum }
// filter the collection return collection.filter(obj => { for (let i = 0; i < souceKeys.length; i++) { if (obj[souceKeys[i]] !== source[souceKeys[i]]) { returnfalse; } } returntrue; }); }
5. 短线连接格式
将字符串转换为短线连接格式。 短线连接格式是小写单词全部小写并以破折号分隔。
1 2 3 4 5 6 7 8 9 10 11
functionspinalCase(str) { // Replace low-upper case to low-space-uppercase str = str.replace(/([a-z])([A-Z])/g, "$1 $2"); // Split on whitespace and underscores and join with dash return str .toLowerCase() .split(/(?:_| )+/) .join("-"); }
functionuniteUnique(arr) { let newArr = Object.values(arguments) let a = []; let b = []; for(let i = 0 ;i <newArr.length;i++ ){ a = a.concat(newArr[i]); } for(let j = 0 ;j < a.length;j++){ if(!b.includes(a[j]) ){ b.push(a[j]) } } return b
functionconvertHTML(str) { // Split by character to avoid problems. var temp = str.split(""); // Since we are only checking for a few HTML elements, use a switch for (var i = 0; i < temp.length; i++) { switch (temp[i]) { case"<": temp[i] = "<"; break; case"&": temp[i] = "&"; break; case">": temp[i] = ">"; break; case'"': temp[i] = """; break; case"'": temp[i] = "'"; break; } }
functionsumPrimes(num) { // Helper function to check primality functionisPrime(num) { const sqrt = Math.sqrt(num); for (let i = 2; i <= sqrt; i++) { if (num % i === 0) returnfalse; } returntrue; }
// Check all numbers for primality let sum = 0; for (let i = 2; i <= num; i++) { if (isPrime(i)) sum += i; } return sum; }
functionsmallestCommons(arr) { const [min, max] = arr.sort((a, b) => a - b); const numberDivisors = max - min + 1; // Largest possible value for SCM let upperBound = 1; for (let i = min; i <= max; i++) { upperBound *= i; } // Test all multiples of 'max' for (let multiple = max; multiple <= upperBound; multiple += max) { // Check if every value in range divides 'multiple' let divisorCount = 0; for (let i = min; i <= max; i++) { // Count divisors if (multiple % i === 0) { divisorCount += 1; } } if (divisorCount === numberDivisors) { return multiple; } } }
// test here dropElements([1, 2, 3, 4], function(n) { return n >= 3; });
16. 数组扁平化
嵌套数组扁平化成一维数组。 必须考虑到各种深度的嵌套层级。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
functionsteamrollArray(arr) { const flattenedArray = []; // Loop over array contents for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i])) { // Recursively flatten entries that are arrays // and push into the flattenedArray flattenedArray.push(...steamrollArray(arr[i])); } else { // Copy contents that are not arrays flattenedArray.push(arr[i]); } }
return flattenedArray; };
// test here steamrollArray([1, [2], [3, [[4]]]]);
17. 翻译二进制字符串
请实现一个函数,把传入的二进制字符串转换成英文句子。
二进制字符串会以空格分隔。
1 2 3 4 5 6 7 8 9 10 11 12 13
functionbinaryAgent(str) { var biString = str.split(" "); var uniString = []; for (var i = 0; i < biString.length; i++) { uniString.push(String.fromCharCode(parseInt(biString[i], 2))); } return uniString.join(""); }