题目1:给定一个数组(如[2, 7, 11, 15]),求任意两个数组元素(不能是同一个数组元素)值的和为某一个指定值(如9)的数组下标。
例如 给定[2, 7, 11, 15], target = 9,求符合条件数组元素下标return [0,1]
function findIndex(arr, target) {
var result = [];
for(var i = 0; i < arr.length; i++) {
for(var j = i + 1; j < arr.length; j++) {
if(arr[i] + arr[j] === target) {
result.push([i, j]);
}
}
}
return result;
}
console.log(findIndex([2, 7, 11, 15], 9)); // [0, 1]
题目2:封装函数实现10得阶乘 最终输出10=1098765432*1=3628800
//1.第一种方法
function factorial(n) {
var result = 1;
for(var i = 2; i <= n; i++) {
result *= i;
}
return result;
}
console.log("10 的阶乘为:" + factorial(10));
console.log("10 的阶乘展开为:" + "10=" + factorial(10).toString().replace(/(\d)\*(\d)/g, "$1*$2"));
//2.第二种方法
function fc(){
var str='10=',sum=1;
for(var i=10;i>=1;i--){
sum*=i;
if(i==1){
str+=i+'='
}else{
str+=i+'*'
}
}
console.log(str+sum);
}
fc();
题目3:给出一个字符串 输出最长单词的长度(和数组一样可以使用for循环遍历,也可以通过length属性获取长度)
function longestWord(str) {
var words = str.split(' ');
var longest = 0;
for(var i = 0; i < words.length; i++) {
if(words[i].length > longest) {
longest = words[i].length;
}
}
return longest;
}
console.log(longestWord("i love World")); // 5
题目4:100到1000以内的水仙花数 个位立方+十位立方+百位立方=水仙花数
function narcissisticNumbers(num) {
var result = [];
for(var i = 100; i <= num; i++) {
var str = i.toString();
var len = str.length;
var sum = 0;
for(var j = 0; j < len; j++) {
sum += parseInt(str[j], 10) ** len;
}
if(i === sum) {
result.push(i);
}
}
return result;
}
console.log(narcissisticNumbers(1000)); // [153, 370, 371, 407]