1.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出
代码:
// 定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;
//然后按顺序每五个数求出一个平均值,放在另一个数组中并输出
/*
*
@ 创建等步长数组
@ params {Number} num 所需要数组的长度
@ params {Number} ini 所需要数组的第一个值
@ params {Number} ste 所需要数组的步长
@ return (Array) 返回生成的数组
*
*/
function createArr(num,ini,ste){
var arr = [ini] //创建数组并将初始值给第一位
for(var i = 1;i<num;i++){
arr.push(arr[i-1]+ste) //将值放入新数组
}
return arr
}
/*
*
@ 计算数组给定步长的平均值,并放入新数组中返回
@ params {Array} arr 需要计算算的数组
@ params {ste} ste 计算步长
@ return 将计算结果放入新数组返回
*
*/
function computeArr(arr,ste){
var res = new Array() //创建一个新数组去接收结果
var temp = 0 //设置一个临时变量去接收和
for(var i = 0;i<arr.length;i++){
temp+=arr[i] //进行累加方便计算平均值
if((i+1)%ste==0){ //如果加到给定步长的项数则进行计算
res.push(temp/ste) //将计算结果放入新数组中
temp = 0 //将临时变量置零
}
}
return res
}
var arr = createArr(30,2,2)
var res = computeArr(arr,5)
console.log('arr :>> ', arr);
console.log('res :>> ', res);
结果:
2.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角
代码:
//通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角
/*
*
@ 创建给定数字的二阶方阵二维数组
@ params {Number} num 二维数组的长度
@ return 返回创建好的二维数组
*
*/
function creatArr(num){
var res = new Array() //创建返回结果的数组
var temp = new Array() //创建一个临时数组接收二维数组中子数组的元素
for(var i = 1;i<=num*num;i++){
temp.push(i) //将项放入子数组中
if(i%num==0){
res.push(temp) //将子数组放入二维数组中
temp = []
}
}
return res
}
/*
*
@ 获取二维数组的左下半三角
@ params {Array} 二维数组
@ return 二维数组的左下半三角
*
*/
function getResult(arr){
var res = new Array() //创建结果数组
for(i=0;i<arr.length;i++){ //遍历二维数组
var temp = new Array()
for(k=0;k<=i;k++){ //遍历子数组的项
temp.push(arr[i][k])
}
res.push(temp)
}
return res
}
var arr = creatArr(5)
var res = getResult(arr)
console.log('arr :>> ', arr);
console.log('res :>> ', res);
结果:
3.编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组
代码:
//编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组
/*
*
@ 数组去重
@ params {Array} arr 需要去重的数组
@ return 去重后的数组
*
*/
//双层for循环去重
function norepeat1(arr){
var res = arr
for (i in res) {
for (k = i-0 + 1; k < res.length; k++) {
if(res[k] == res[i]){ // 判断有没有相同的 相同就要删除掉
res.splice(k, 1)
k-- //只有要删除的操作 避免数组塌陷忽略的项 进行-- 继续比较
}
}
}
return res
}
//先排序再用一层for循环去重
function norepeat2(arr){
var res = arr
res.sort(function(a,b){ return a - b })
for (k =0; k < res.length-1; k++) {
if(res[k] == res[k+1]){ // 判断当前的和紧跟着的后面的项比较 相等就该删除
res.splice(k+1, 1)
k-- //只有要删除的操作 避免数组塌陷忽略的项 进行-- 继续比较
}
}
return res
}
//利用对象键值唯一去重
function norepeat3(arr){
var res = new Array()
var obj = new Object()
for(var i in arr){
obj[arr[i]]=arr[i] // 把数组的每一项 当做对象的key值
}
for(var k in obj){
res.push(obj[k])
}
return res
}
//新数组挑选去重
function norepeat4(arr){
var res = new Array()
for(i=0;i<arr.length;i++){
//判断数组里面有没有这个成员
// 有这个成员 不添加
// 没有这个成员 才添加
res.indexOf(arr[i])==-1 && res.push(arr[i])
}
return res
}
var a = [1,2,2,3,4,5,1,4,2,1,3,5,1,2,3,4]
console.log('a :>> ', a);
console.log('norepeat1',norepeat1(a))
console.log('norepeat2',norepeat2(a))
console.log('norepeat3',norepeat3(a))
console.log('norepeat4',norepeat4(a))
运行结果: