1、通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后在页面上输出该数组的左下半三角
最终结果如下:
1
6 7
11 12 13
16 17 18 19
21 22 23 24 25
<script>
// 方法一
var Arr = [];//外层
var count = 0;
// 1、建立五个一维数组
for (var i = 0; i < 5; i++) {
var arr = [];//内层
for (var j = 0; j < 5; j++) {
// 内层循环执行 25次
count++;// 1-25
arr.push(count);
}
// 把一维数组放入Arr外层数组中
// 内层循环每完成一组,代表一个一维数组赋值完毕
// 把一维数组的值追加到外层Arr数组内,循环五次
Arr.push(arr);
}
// 打印二维数组
console.log(Arr);
// 2、输出左下角内容
for (var i = 0; i < 5; i++) {
// 2.1 先取出一维数组
var arr = Arr[i];
// console.log(arr);
// 2.2 取出一维数组中的每一项
for (var j = 0; j <= i; j++) {
document.write(arr[j] + ' ');
}
document.write('</br>');
}
// 方法二
var container_arr = [];
for (var i = 0, count = 0; i < 5; i++) {
var arr = [];
for (var k = 0; k < 5; k++) {
// 建立基本结构
count++;
arr.push(count);
// 输出内容
if (k <= i) {
document.write(count + " ");
}
}
container_arr.push(arr);
document.write("</br>")
}
console.log(container_arr);
document.write('-------------------')
document.write("</br>")
// 方法三
var data = [];
var tmp = []; // 临时数组保存元素
for (var i = 1; i <= 25; i++) {
tmp.push(i);
if (i % 5 == 0) {
// 每5个数
data.push(tmp);
// 清空tmp下的元素
tmp = [];
}
}
console.log(data)
// 输出三角形
for(var i = 0; i < data.length; i++){
for(var j = 0; j <= i; j++){
document.write(data[i][j] + " ");
}
document.write("</br>")
}
</script>
2、编写函数map(arr) 把数组中的每一位数字都增加30%
<script>
var arr = [1,2,3,4,5,6,7,8,9,100];
var res = []
function map(arr){
for(var i = 0; i < arr.length; i++){
arr[i] += arr[i] * 0.3;
}
}
map(arr);
console.log(arr);//[1.3, 2.6, 3.9, 5.2, 6.5, 7.8, 9.1, 10.4, 11.7, 130]
</script>
3、以下是某班级一次考试的成绩表。请计算每个学生总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号
学号 语文 数学 英语 总成绩 备注
1 105 62 118
2 89 78 120
3 86 64 80
4 78 99 91
5 107.5 97 70
6 112 61 92
7 101 79 104
8 71 72 105
9 56 68 61
10 98 83 77
<script>
// 方法一
var obj = [
{ id: 1, a: 105, b: 62, c: 118 },
{ id: 2, a: 89, b: 78, c: 120 },
{ id: 3, a: 86, b: 64, c: 80 },
{ id: 4, a: 78, b: 99, c: 91 },
{ id: 5, a: 107.5, b: 97, c: 70 },
{ id: 6, a: 112, b: 61, c: 92 },
{ id: 7, a: 101, b: 79, c: 104 },
{ id: 8, a: 71, b: 72, c: 105 },
{ id: 9, a: 56, b: 68, c: 61 },
{ id: 10, a: 98, b: 83, c: 77 },
]
// 总成绩的和
var sum = 0;
// 总成绩数组
var arr = [];
// 语文单科成绩
var aSum = [];
for (var i = 0; i < obj.length; i++) {
// 求出每位同学的总成绩
sum = obj[i].a + obj[i].b + obj[i].c;
// 排序输出总成绩排名
arr.push(sum)
// 对成绩进行排序
arr.sort(function(a,b){
return b-a
});
// console.log('第', i+1 ,'个同学的总成绩:',sum);
// 语文单科成绩
aSum.push(obj[i].a);
aSum.sort(function (a, b) {
return b - a;
});
}
console.log('总成绩排名:' + arr);
var OneNumber = aSum[aSum.length - 1];
for (var i = 0; i < obj.length; i++) {
if (OneNumber == obj[i].a) {
var xuehao = i + 1;
// console.log(i+1);
break;
}
}
console.log('语文排名:' + aSum, '语文单科第一名:' + OneNumber, '学号:' + xuehao);
console.log('-----------------------------------------------')
// 方法二
var students = [
{ id: 1, a: 105, b: 62, c: 118 },
{ id: 2, a: 89, b: 78, c: 120 },
{ id: 3, a: 86, b: 64, c: 80 },
{ id: 4, a: 78, b: 99, c: 91 },
{ id: 5, a: 107.5, b: 97, c: 70 },
{ id: 6, a: 112, b: 61, c: 92 },
{ id: 7, a: 101, b: 79, c: 104 },
{ id: 8, a: 71, b: 72, c: 105 },
{ id: 9, a: 56, b: 68, c: 61 },
{ id: 10, a: 98, b: 83, c: 77 },
];
// 1、总成绩
for (var i = 0; i < students.length; i++) {
//对象里面写变量会直接自动创建 total
students[i].total = students[i].a + students[i].b + students[i].c;
}
console.log(students)
// 2、按照总成绩来排序
for (var j = 0; j < students.length; j++) {
for (var i = 0; i < students.length - 1 ; i++) {
if (students[i].total < students[i + 1].total) {
var tmp = students[i];
students[i] = students[i + 1];
students[i + 1] = tmp;
}
}
}
// students.sort(function(a,b){
// return b.total - a.total ;
// })
console.log(students)
// 3、统计各单科成绩第一名
var aTop = bTop = cTop = students[0];
for(var i = 1; i < students.length; i++){
if(students[i].a > aTop.a){
aTop = students[i];
}
if(students[i].b > bTop.b){
bTop = students[i];
}
if(students[i].c > cTop.c){
cTop = students[i];
}
}
console.log(aTop,bTop,cTop);
</script>
运行效果:
4、 编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组
<script type="text/javascript">
// 方法一 数组遍历
var arr = [1, 2, 3, 3, 3, 4, 5, 3, 6, 7, 3, 2];
function norepeat(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1); // 两两比较,如果前后的值相同,则删除后面的数
j--;
}
}
}
return arr;
}
var res = norepeat(arr);
console.log(res);
// 方法二 排序
var arr = [1, 2, 3, 3, 3, 4, 5, 3, 6, 7, 3, 2];
function noRepeat() {
var Arr = arr.sort();
for (var i = 0; i < arr.length; i++) {
if (Arr[i] == Arr[i + 1]) {
Arr.splice(i, 1); // 等同于 Arr.splice(i+1,1);
i--;
}
}
return Arr;
}
console.log(noRepeat(arr));
// 方法三
var arr = [1, 2, 3, 3, 3, 4, 5, 3, 6, 7, 3, 2];
function NoRepeat() {
var result = [];
// 使用arr数组中每一个元素比较在在result中是否出现,如果没有出现说明这个元素现在还没有重复,加入到result
for (var i = 0; i < arr.length; i++) {
if(indexOf(result,arr[i]) == -1){
result.push(arr[i]);
}
}
return result;
}
// 单独封装的indexOf方法,验证数组当中是否存在指定的元素
// 找到返回下标,没有找到返回-1
function indexOf(arr, value) {
for (var i = 0; i < arr.length; i++) {
if(arr[i] == value){
return i;
}
}
return -1;
}
console.log(NoRepeat(arr));
console.log('------------------')
// 方法四 ES6 新增的set集合
console.log(new Set(arr));
</script>
5、数组扁平化
var arr = [
[1, 2, 2],
[3, 4, 5, 5],
[6, 7, 8, 9,
[11, 12, [12, 13, [14]]]], 10
];
// 转为一维数组 [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]
// 提示:需要使用 instanceof判断是否为数组 并且使用递归
<script>
// var arr = [12,3]
// console.log(typeof arr);//object
// console.log(arr instanceof Array); //true
// instanceof关键字是用于判断指定对象是否为指定的构造函数创造
// 语法:检查的变量 instanceof 构造函数名称(函数名称)
// 方法一 函数递归
function formartArray(arr) {
// 创建空数组存储元素
var res = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] instanceof Array) {
// 当前遍历的还是数组
// res.concat将参数中的元素与res数组进行合并
res = res.concat(formartArray(arr[i]))
}else{
// 当前遍历的元素不是数组,将元素加入空数组
res.push(arr[i])
}
}
return res;
}
console.log(formartArray(arr));
var result = [];
function FormartArray(arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] instanceof Array) {
// 当前遍历的还是数组
// res.concat将参数中的元素与res数组进行合并
FormartArray(arr[i])
}else{
// 当前遍历的元素不是数组,将元素加入空数组
result.push(arr[i])
}
}
return result;
}
console.log(FormartArray(arr));
6、编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型
<script>
var arr = [10,20,30,40,50,60,70,80,90];
function has(arr,num){
for(var i = 0; i < arr.length; i++){
if(arr[i] == num){
return true
}else{
return false;
}
}
}
var res = has(arr,60)
console.log(res);
</script>