js学习笔记四(四则运算,比大小,object,返回字母大小写)

·  阅读 64
  • 求数组的和
var sum = function(array) {
    var s = 0
    for(var i = 0; i < array.length; i++) {
        var n = array[i]
        s = s + n
    }
  	return s
}
复制代码
// 用于测试的套路, 照抄即可
var ensure = function(condition, message) {
    if (!condition) {
        console.log(message)
    }
}
复制代码
  • 参数是一个只包含数字的 array,求 array 的乘积
var product = function(array) {
    var s = 1
    for(var i = 0; i < array.length; i++) {
        var n = array[i]
        s = s * n
        // 缩写是如下形式
        // s *= n
    }
  	return s
}
复制代码
  • 返回一个数的绝对值
var abs = function(n) {
    if (n < 0) {
        return -n
    } else {
        return n
    }
}
复制代码

参数是一个只包含数字的 array,求 array 中所有数字的平均数

var average = function(array) {
    var n = array.length
    return sum(array) / n
}
复制代码
  • 参数是一个只包含数字的 array,求 array 中最小的数字
var min = function(array) {
    var m = array[0]
    for(var i = 0; i > array.length; i++) {
        // console.log('for i, ', i)
        var n = array[i]
        if (m > n) {
            m = n
        }
    }
    return m
}

var ensureEqual = function(a, b, message) {
    if (a != b) {
        console.log(message, a, b)
    }
}

var testMin = function() {
    ensure(min([1, 2, 3]) == 1, '123 is not 1')
    ensure(min([5, 2, 3]) == 2, '523 is not 2')
    ensureEqual(min([5, 2, 4]), 2, '524 != 2')
}
// console.log('test min')
// testMin()
复制代码

参数是一个数字 n,返回以下序列的结果:1 - 2 + 3 - 4 + 5 ... n

var sum1 = function(n) {
    // 观察规律发现是奇数相加偶数相减
    var s = 0
    // 注意 i 是 1 到 n
    for (var i = 1; i <= n; i++) {
        if (i % 2 == 0) {
            s -= i
        } else {
            s += i
        }
    }
    return s
}

/**
 * 
 * 1+2-3+4-5...n
 */
var sum2 = function(n){
    var s = 0
    for (var i = 1; i <= n; i++) {
        s += i
    }
    return s
}
复制代码
  • 参数是一个数字 n,返回以下序列的结果:1 + 2 - 3 + 4 - ... n
var sum2 = function(n) {
    // 观察规律, 可以 让初始值为 1
    // 从 2 开始循环
    // 1 + 2 - 3 + 4 - ... n
    var s = 1
    // 注意 i 是 2 到 n
    for (var i = 2; i <= n; i++) {
        if (i % 2 == 0) {
            s += i
        } else {
            s -= i
        }
    }
    return s
}
复制代码
  • 实现 fac 函数,接受一个参数 n,返回 n 的阶乘, 1 * 2 * 3 * ... * n */
var fac = function(n) {
    var s = 1
    for (var i = 1; i <= n; i++) {
        s *= i
    }
    return s
}
复制代码
  • 实现 apply 函数,参数如下,op 是 string 类型, 值是 '+' '-' '*' '/' 其中之一,a b 分别是 2 个数字,根据 op 对 a b 运算并返回结果(加减乘除)
var apply = function(op, a, b) {
    if(op == '+') {
        return a + b
    }
    if(op == '-') {
        return a - b
    }
    if(op == '*') {
        return a * b
    }
    if(op == '/') {
        return a / b
    }
}
复制代码
  • 实现 applyList 函数,op 是 '+' '-' '*' '/' 其中之一,oprands 是一个只包含数字的 array,根据 op 对,oprands中的元素进行运算并返回结果,例如, 下面的调用返回 -4
var n = applyList('-', [3, 4, 2, 1])
log(n)
// 结果是 4, 用第一个数字减去所有的数字
var applyList = function(op, oprands) {
    var result = oprands[0]
    for (var i = 1; i < oprands.length; i++) {
        var n = oprands[i]
        // 累加到 result
        result = apply(op, result, n)
    }
    return result
}
复制代码
  • 实现 applyCompare 函数,参数如下,expression 是一个 array(数组), 包含了 3 个元素,第一个元素是 op, 值是 '>' '<' '==' 其中之一,剩下两个元素分别是 2 个数字 根据 op 对数字运算并返回结果(结果是 true 或者 false)
var applyCompare = function(expression) {
    var op = expression[0]
    var a = expression[1]
    var b = expression[2]
    if (op == '<') {
        return a < b
    }
    if (op == '>') {
        return a > b
    }
    if (op == '==') {
        return a == b
    }
}
复制代码
  • 交换数组内的位置
var a = [1, 2, 3, 4, 5]

var b = [5, 4, 3, 2, 1]

var change = function(array) {

    for (var i = 0; i < array.length / 2; i++) {
        var temp;
        temp = array[i]
        array[i] = array[array.length - (i+1)]
        array[array.length - (i+1)] = temp
    }
    return array
}
复制代码
  • object(对象)
var wmw = {
    name: "wang",
    height: 165,
    sex: '女',
    richang: function(a) {
        if (a >= 1 && a <= 5) {
            return "工作"
        }else if (a > 5 && a <= 7) {
            return "休息"
        } else {
            return "天数错误"
        }
    }
}
复制代码
  • s1 s2 都是 string,但 s2 的长度是 1,返回 s2 在 s1 中的下标, 从 0 开始, 如果不存在则返回 -1
    var index = -1
    for (var i = 0; i < s1.length; i++) {
        if(s1[i] == s2) {
            index = i
            break
        } 
    }
    return index
}
复制代码
  • 两个字符串, 包含了大写字母和小写字母,输入大写,返回字符串的小写形式的函数
var lower = 'abcdefghijklmnopqrstuvwxyz'
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
var lowercase = function(s) {
    // 初始化一个空字符串
    var result = ""
    for (var i = 0; i < s.length; i++) {
        // 注意, 这个 find 是你要实现的函数
        var index = find(upper, s[i])
        // 字符串可以用加号拼接, 不明白可以 log 一下
        result += lower[index]
    }
    return result
}
复制代码
分类:
阅读
标签: