1. 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。
// 方式一:
var arr = [];
var newArr = [];
arr.length = 30;
var sum = 0;
for(var i=1;i<=arr.length;i++){
// 因为 i从 1开始 ,而数组的下标是 0 开始
arr[i-1] = 2*i;
// 判断 每五个数为一组,计算平均值,并放入 newArr 数组内
if(i % 5 !== 0){
sum += arr[i-1];
}else{
newArr.push((sum+arr[i-1])/5);
sum = 0;
}
}
console.log(arr);
console.log(newArr);
封装函数写的方法:
<input type="button" value="测试" onclick="testf()">
// 方式二:
function testf(){
var arr=[];
//1)、从2开始给元素赋偶数值,
for(var i=1;i<=30;i++){
arr.push(i*2);
}
console.log(arr);
//2)、按顺序每5个求一次平均值 放在另一个数组并输出。
var sum = 0; //保存求和结果
var arr2=[]; //保存平均值的数组
for(var i=0;i<arr.length;i++){
//求和
sum=sum+arr[i];
if((i+1)%5==0){//看看有没有够5个
var avg = sum/5; //求平均值
arr2.push(avg); //把平均值放入数组
sum = 0; //保证下次的五个数求和之前,是从0开始求和的。
}
}
console.log(arr2);
}
运行结果:
2. 编写函数map(arr) 把数组中的每一位数字都增加30%,并返回一个新数组;
// 一、定义函数
// 功能:把数组的每个元素的值增加30%;
// 参数:数组
// 返回值:是新的数组(增加了30%后的结果)
function map(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
newArr.push(arr[i]*1.3); //arr[i]*1.3 就是: arr[i]+arr[i]*0.3
}
return newArr;
}
//二、调用函数
var arr = [1,2,3,4];
var t = map(arr);
console.log(t);
运行结果:
3. 有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
var n = 5 // 要插入函数的数
var arr = [1,2,3,4,6,7,8,9]
for(var i=0;i<=arr.length;i++){
if(n<arr[i]){
arr.splice(i,0,n); // i 插入数组的下标 0 不需要删除 n 插入的数
break;
}
}
console.log(arr);
运行结果:
第二种方法:
// 一、定义函数
// 功能:有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
// 参数:
// 有序数组(从小到大)
// 要插入的数
// 返回值:插入新数的数组。
// 举例来说明题意:
// 原始的数组是: [12,23,34,45,56] 注意:有序,从小到大的顺序
// 要插入的数: 30;
// 结果是: [12,23,30,34,45,56]
function insert(arr,num){
// 这个需求的前提是数组是有序的,即:参数arr是有序的
// 1、先找到要插入的位置
var t=arr.length;//用t变量来保存要插入的位置,赋值为arr.length 是放置t比数组arr所有的元素都大。
for(var i=0;i<arr.length;i++){
if(num<arr[i]){//因为是从小到大排序,找到第一个比num大的数,那么 i就是要插入的位置
t = i;
break;
}
}
// 2、插入(使用splice函数再数组中间插入数字)
arr.splice(t,0,num);//在下标t处删除0个元素,然后在下标t处插入num
return arr;
}
//二、调用函数
var arr = [12,23,34,45,56];
var t = insert(arr,30);
console.log(t);
运行结果:
第三种方法:
// 一、定义函数
// 功能:有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
// 参数:
// 有序数组(从小到大)
// 要插入的数
// 返回值:插入新数的数组。
// 举例来说明题意:
// 原始的数组是: [12,23,34,45,56] 注意:有序,从小到大的顺序
// 要插入的数: 3;
// 结果是: [3,12,23,,34,45,56]
// 方法二:循环数组的同时,找到合适的位置直接插入
// 注意:要注意,插入的数比数组中最后一个数还大的情况
function insert(arr, num) {
if (num > arr[arr.length - 1]) {//如果插入的数num比最后一个元素还大
arr.push(num);
} else {
//循环数组的同时,找到合适的位置直接插入
for (var i = 0; i < arr.length; i++) {
if (num < arr[i]) {
arr.splice(i, 0, num);
break;
}
}
}
return arr;
}
//二、调用函数
var arr = [12, 23, 34, 45, 56];
var t = insert(arr, 3);
console.log(t);
运行结果:
4. 编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组
<input type="button" value="测试" onclick="testf()" />
function testf(){
var arr = noRepeat([1,2,4,2,3,5]);
console.log(arr);
}
//功能:数组去重
//参数:数组
//返回值:去重后的数组
// 举例说明题意:
//原始数: 1,2,3,4,3,3,2,5
//执行函数后的结果是: [1,2,3,4,5]
function noRepeat(arr){
var arr2=[];//保存去重后的结果
for(var i in arr){
//判断arr[i]在arr2里是否存在
if(has(arr2,arr[i])!=true){
arr2.push(arr[i]);
}
}
return arr2;
}
//功能:判断一个数在数组中是否存在:
//参数:数组,一个数
//返回值:true:存在;false:不存在
function has(arr,n){
for(var i in arr){
if(arr[i]==n){
return true;
}
}
return false;
}
运行代码: