JavaScript简单小案例(求最长单词长度、水仙花数、返回和为目标值的数组下标、封装阶乘输出表达式)

目录

一、给定一个数组(如[2, 7, 11, 15]),求任意两个数组元素(不能是同一个数组元素)值的和为某一个指定值(如9)的数组下标。

思路:

代码:

运行结果如下:

二、封装函数实现10得阶乘 最终输出10=10*9*8*7*6*5*4*3*2*1=3628800 

思路: 

代码:

运行结果如下:

三、给出一个字符串 输出最长单词的长度(和数组一样可以使用for循环遍历,也可以通过length属性获取长度)

思路: 

代码:

运行结果如下:

四、100到1000以内的水仙花数 个位立方+十位立方+百位立方=水仙花数

思路: 

代码:

运行结果如下:


一、给定一个数组(如[2, 7, 11, 15]),求任意两个数组元素(不能是同一个数组元素)值的和为某一个指定值(如9)的数组下标。

例如 给定[2, 7, 11, 15], target = 9,求符合条件数组元素下标return [0,1]

思路:

        用两层for循环遍历数组元素,第二层循环遍历的数组元素为第一层循环遍历的数组元素的后一个,这样就可以保证两个数组元素不是同一个,声明一个变量为两个数组元素之和,然后判断与目标值是否相等,相等时,返回数组的下标。

代码:
//封装函数 给target设置形参 通过修改实参的值可以更改n
function target(n) {
    //将题目中给定的数组进行声明
    var arr = [2, 7, 11, 15];
    //循环遍历数组中的数组元素
    for (var a = 0; a < arr.length; a++) {
        //循环遍历后一个数组元素,确保选的两个任意数组元素不是同一个
        for (var b = a + 1; b <= arr.length; b++) {
            //声明一个c为选择的两个数组元素之和
            var c = arr[a] + arr[b];
            //判断两个数组元素之和是否等于指定值
            if (c == n) {
                //返回题目中要求的数组下标
                return [a, b]
            }
        }
    }
}
//声明一个res接收返回值
var res = target(18)
//打印res  结果就是符合条件的数组元素下标
console.log(res)
运行结果如下:


二、封装函数实现10得阶乘 最终输出10=10*9*8*7*6*5*4*3*2*1=3628800 

思路: 

        使用for循环循环遍历从n到2的每一个数,然后让循环遍历的每个数后边拼接字符'*',声明一个空字符串,再将他们进行相加(字符串拼接)操作,再将这个数后面拼接一个字符‘1‘(因为1后面没有*字符),再声明一个初始值为1的变量,做相乘操作,和就为阶乘结果,最后将结果进行字符串拼接。

代码:
//封装函数 给fc求阶乘的数设置一个形参 通过修改实参的值可以更改n
function fc(n) {
    //声明一个r为一个空字符串,h初始值为1
    var r = "", h = 1;
    //循环遍历从n到2的值
    for (var i = n; i > 1; i--) {
        //h=h*i 让从n到2的值相乘(阶乘)
        h *= i
        //n到2之间的每个值后面拼接一个字符串*
        r += i + '*'
    }
    //声明一个z 让n到2后面的值拼接一个字符串1,以字符串的形式展示出从n到1相乘的表达式
    var z = r + "1"
    //打印出字符串拼接出的答案
    console.log(n + "=" + z + "=" + h)
}
//声明一个实参被形参调用
var res = fc(10)
运行结果如下:


三、给出一个字符串 输出最长单词的长度(和数组一样可以使用for循环遍历,也可以通过length属性获取长度)

思路: 

        将字符串转为数组的形式,然后循环遍历数组中的每个数组元素,声明一个变量接收最长的单词长度,判断每个数组元素的长度是否比现在的最长单词长度要长,长的话进行赋值,循环遍历完之后,最长的单词长度就会求出。

代码:
//声明一个字符串
var str = 'he is jumped ahdjksnadkjfhkjas';
//封装函数求最最长单词的长度
function maxLength() {
    //将字符串转换成数组
    var arr = str.split(' ');//['he','is','','']
    //声明一个最长单词长度,初始值为0
    var max = 0;//最长单词长度
    //循环遍历数组中的每一个值
    for (var i = 0; i < arr.length; i++) {
        //当遍历到的数组中单词的长度>最长单词长度
        if (arr[i].length > max) {
            //将此时的单词长度的值赋给最长单词长度
            max = arr[i].length
        }
    }
    //返回最长单词长度
    return max
}
//此时打印的结果为数组中的最长单词的长度
console.log(maxLength())
运行结果如下:


四、100到1000以内的水仙花数 个位立方+十位立方+百位立方=水仙花数

思路: 

        循环遍历100-1000之间的数字,百位数字为这个数除100取整,十位数字为这个数除100取余后除10,个位数字为这个数除10取余,将个十百位的数字的立方和与这个数字相比较,如果相等此时的数就是水仙花数。

代码:
//封装函数,设置形参
function sum() {
    //循环遍历100到1000之间的数字
    for (var i = 100; i < 1000; i++) {
        //声明变量为百位数字
        var a = parseInt(i / 100);//百位数字 
        //声明变量为十位数字
        var b = parseInt(i % 100 / 10);//十位数字
        //声明变量为个位数字
        var c = i % 10;
        //当百位的立方+十位的立方+个位的立方相加等于遍历的这个数时
        if (a * a * a + b * b * b + c * c * c == i) {
            //此时打印的数为水仙花数
            console.log(i + '是水仙花数');
        }
        // if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) {
        //     console.log(i + '是水仙花数');
        // }
    }
}
//调用函数
sum()
运行结果如下:


  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值