数组求和,求平均值,将一段英文字符串的首字母转换为大写,数组去重 数组排序,数组转对象,有一个长度为 100 的数组, 手写函数实现push功能

111 阅读3分钟

1. 有 10 个学生的成绩存在数组中 ([40, 60, 70, 75, 78, 98, 100, 84, 79, 97]), 请统计大于等于平均成绩的人数

/* 思路:
        1.先拿到每一个学生的成绩
        2.求出全部学生的平均成绩
        3.判断学生成绩大于平均成绩的人数
        4.输出满足条件的人数
 */
var sum = 0;  // 定义一个变量 用于存储十位学生的总成绩
          
var num = 0;  // 定义一个变量 用于计数 初始值为0
arr.forEach(function(item){
    // sum = sum + item;   // 通过循环拿到所有学生的总成绩
    sum += item;  // 等同于 sum = sum + item; 
})
console.log(`总成绩为${sum}`); // 打印输出总成绩
        
for(var i = 0; i < arr.length; i++){
var avg = sum / arr.length;  // 通过循环 计算学生的平均成绩
}
console.log(`平均成绩为${avg}`);

arr.map(function(item){  
if(item > avg){   
num++;  // 如果学生成绩大于平均成绩 num 加1 
}
return num;  
})
console.log(`高于平均成绩的学生有${num}个`);

2. 将"i love javascript very much"的每个单词的第一个字母,变为大写

/*
    思路:
        1.将每个单词分隔开
        2.把每个单词的首字母转换为大学字母
        3.将每个单词连接起来
*/

var str = 'i love javascript very much';
var arr = str.split(' ');  // 把每个单词分隔开,返回值为数组
console.log(arr);
var newStr1 = '';
var newStr2 = ''; 
var newStr3 = '';
var newStr4 = '';
for(var i = 0; i < arr.length; i++){
    newStr1 = arr[i].slice(0,1).toUpperCase(); // 将每个单词的首字母转换为大写字母
    newStr2 = arr[i].slice(1,arr[i].length); // 将首字母后的字母存储在 newStr2 中    
    newStr3 = newStr1 + newStr2;  // 将首字母和首字母以后的字母拼接 并存储在newStr3中
    newStr4 += newStr3 + ' '; // 将每个单词 和 空格 连接起来 形成英语语句
}
newStr4 = newStr4.trimEnd(); // 去掉最后一个空格
console.log(newStr4);






// 代码优化

var str = 'i love javascript very much';
var arr = str.split(' ');    // 把每个单词分隔开,返回值为数组
console.log(arr);    // 单词分开后返回的数组
var newStr1 = '';
var newStr2 = ''; 
for(var i = 0; i < arr.length; i++){
    newStr1 = arr[i].slice(0,1).toUpperCase() + arr[i].slice(1,arr[i].length);    // 将每个单词首字母转换成大写 并与首字母后面字母拼接
    newStr2 += newStr1 + ' ';    // 将每个单词 和 空格 连接起来 形成英语语句

}
newStr2 = newStr2.trimEnd();   // 去掉最后一个空格
console.log(newStr2);

3. 数组去重 (将数组中重复的数据去掉,只留一个) [3, 6, 5, 3, 5, 10, 6, 10, 7, 8, 3, 2] => [3, 6, 5, 10, 7, 8, 2]

// 方法1. 通过for循环将数组arr去重

var arr = [3, 6, 5, 3, 5, 10, 6, 10, 7, 8, 3, 2];
console.log(arr);
var newArr = [];  // 定义一个空数组 用于存储去重后的数组
for(var i = 0; i < arr.length; i++){
    if(newArr.indexOf(arr[i]) == -1){  // 判断新数组中有无原数组中的数据  没有就写入  反之则不写入
    newArr.push(arr[i]);  // 末尾新增数据
    }
}
console.log(newArr);

// 方法2

var arr1 = [3, 6, 5, 3, 5, 10, 6, 10, 7, 8, 3, 2];
var newArr1 = [];
arr1.forEach(function(item){
    if(newArr1.indexOf(item) == -1){
    newArr1.push(item);
    }
})
console.log(newArr1);
//第三种方法
var arr3 = [3, 6, 5, 3, 5, 10, 6, 10, 7, 8, 3, 2]; 
for(var i = 0; i < arr3.length; i++){
    for(var j = i+1; j < arr3.length; j++){
        if(arr3[i] == arr3[j]){
        arr3.splice(j,1);
        }
    }
}
        
console.log(arr3);

4. 数组排序

/*
    了解数组排序方法 sort 的使用规则 
    arr.sort(function(a,b){return a-b;})  =>  从小到大
    arr.sort(function(a,b){return b-a;})  =>  从大到小
*/
var arr = [5, 7, 6, 8, 9, 2, 4, 3, 1];
console.log('原数组:');
console.log(arr);
// 小到大
arr.sort(function(a,b){
    return a-b;
})
console.log('从小到大排序:');
console.log(arr);

// 大到小
arr.sort(function(a,b){
    return b-a;
})
console.log('从大到小排序:');
console.log(arr);

数组转对象 ( var arr = ['a','a','a','b','b','c','c','c','c','d','d','d','d'] => obj {a: 3, b: 2, c: 4, d: 4}

// 方法1:
var arr = ['a','a','a','b','b','c','c','c','c','d','d','d','d']
var obj = {};
for(var i = 0; i < arr.length; i++){
    // 对象中没有值为 undefined
    if(obj[arr[i]] == undefined){  // 判断数组内是否有数组内的数据
        obj[arr[i]] = 1;   // 如果没有  将首次出现的键赋值1
    }else{
        obj[arr[i]]++;   // 如果没有  键自增
    }
}
console.log(obj);
方法2:
var arr = ['a','a','a','b','b','c','c','c','c','d','d','d','d']
var obj = {};
for(var i = 0; i < arr.length; i++){
    if(!obj[arr[i]]){  // undefined 转换为布尔值为 false
        obj[arr[i]] = 1;
    }else{
        obj[arr[i]]++;
    }
}
console.log(obj);

6. 有一个长度为 100 的数组, 求出该数组前 10 个元素之和

/*
    思路:
        1. 通过循环 创建一个长度为100 的数组
        2.通过循环求出前十位的值
*/
var arr = [];
var sum = 0;  // 定义一个变量 初始值为0 用于存储数组前十位的和
// 创建一个长度为100的数组
for(var i = 0; i < 100; i++){
arr[i] = i;  // 让数组的值等于i的值
}
console.log(arr);

for(var j = 0; j < arr.length; j++){
    if(j < 10){    // 判断该值是否大于10 
        sum+=arr[j];  // 求和  相同 sum = sum + arr[j]
    }
}

console.log(sum);

9. 请自己手写一个函数, 实现 数组的 push 功能 ( 原数组:var arr = [1, 2, 3] )

/*
    数组中最后一个数据的索引下标为 arr.length-1 
    比最后一个数据大且相邻的索引下标为 arr.length
*/  

var arr = [1, 2, 3];
console.log(arr);
function myPush(fnArr, num) {
    fnArr[fnArr.length] = num;  // 将第二个形参的值赋给 索引下标为fnArr[fnArr.length] 处
    return fnArr;
}
myPush(arr, 5);  // fnArr 的实参为arr  num的实参为5  即num = 5
console.log(arr);  // [1, 2, 3, 5]