09_JavaScript数据操作方法_数组2
目录
01-求每五个数的平均值
02-把数增加为原来的30%
03-判断是否存在
04-数组方法
05-数组去重
06-插入数组并排序
07-输出对象_学生信息对象
08-数据类型存储_堆栈内存
一、数据类型之间存储的区别(重点)
01-求每五个数的平均值
定义一个含有30个整形元素的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个求出一个平均值,放在另一个数组中并输出 编程实现
var arr = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40...];
不要写死一个数组 定义一个空数组 循环 往空数组里push
每五个求出一个平均值
[6, 16,26, 36,46,56]
//01-求每五个数的平均值
<script>
// 1、定义一个含有30个整形元素的数组,按顺序分别赋予从2开始的偶数,
// 然后按顺序每五个求出一个平均值,
// 放在另一个数组中并输出 编程实现
// var arr = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40...60];
// 1-通过循环创建出30个元素的偶数数组
var arr = [];
var newArr = [];
for(var i=1;i<=60;i++){
if(i%2===0){
arr.push(i)
}
}
var sum = 0;
// 2-按顺序每五个求出一个平均值 如何划分5个数一组 %5===0
for(var i=0;i<arr.length;i++){
// i = 0 1 2 3 4 5....29
// 平均值 5个数的和相加 /5
var item = arr[i]; //item 指的是 数组里的每一个元素
sum = sum+item;
if((i+1)%5===0){
var a = sum / 5;
newArr.push(a)
//每次算完平均数后 把sum归零 保证下一组平均数的和是从0开始累加
sum = 0
}
}
console.log(newArr);//[6, 22, 48, 84, 130, 186]
</script>
02-把数增加为原来的30%
编写一个函数,把数组中的每一个数都增加30%,返回一个新数组。
//02-把数增加为原来的30%
var arr = [10,100,200];
function fn(){
//XXXXX
}
<!-- 编写一个函数,把数组中的每一个数都增加30%,返回一个新数组 -->
<script>
var arr = [10,100,200,300];
var newArr = [];
function map(){
//idx 自定义的值 就是索引 index 可以
for(idx in arr){
var res = arr[idx] * (1+0.3);
newArr.push(res);
}
return newArr;
}
let result = map(arr);
console.log(result);
</script>
03-判断是否存在
编写一个函数 ,判断数组中是否存在55这个元素,返回布尔值 。
var arr = [1,2,3,4,55];
var arr1 = [1,2,3,4,6,7,8];
function fn(){
XXXXXX
}
fn(arr,55); //true
fn(arr1,55);//false
<script>
var arr = [1, 2, 3, 4, 5, 55];
var arr1 = [1, 2, 3, 4, 5, 66, 88];
// function has(ary, num) {
// for (var i = 0; i < ary.length; i++) {
// var item = ary[i]; //数组的每一项
// if (item == num) {
// return true
// }
// }
// //如果这个循环走完了,还没返回true 说明了这个数不存在数组中
// return false
// }
// let res = has(arr, 55); //true
// let res1 = has(arr1, 55);//false
// console.log(res, res1);
function has(ary,num){
//-1 代表不存在
if( ary.includes(num)==true){
return true
}else{
return false
}
}
var res = has(arr, 55); //true
var res1 = has(arr1, 55);//false
console.log(res, res1);
</script>
04-数组方法
编写一个函数,norepeat(arr) 将数组中的重复元素去掉,并返回新数组
var arr = [1,2,3,44,55,66,77,2,2,2];
// 判断55在不在数组中
// var res = arr.indexOf(2);
// var res1 = arr.indexOf(99);
// console.log(res);//1
// console.log(res1);//-1 代表不存在 其他就存在
// let res = arr.lastIndexOf(2);
// console.log(res);
var res = arr.includes(9);
var res1 = arr.includes(2);
console.log(res1);
</script>
05-数组去重
有一个从小到大排好序的数组,现在输入一个数,输入之后按照原来从小到大的排序插入到数组中
<script>
// 编写一个函数,norepeat(arr) 将数组中的重复元素去掉,并返回新数组
var arr = [1,22,22,22,44,3,7,88,88];
var newArr = [];
function norepeat(ary){
for(item of ary){
//indexOf 判断一个元素在不在数组里 如果不在就返回-1
if(newArr.includes(item)==false){
newArr.push(item)
}
}
return newArr;
}
let res = norepeat(arr);
console.log(res);//[1, 22, 44, 3, 7, 88]
</script>
06-插入数组并排序
创建一个对象,该对象存储一个学生的信息,信息包括学号、身份证、年龄、性别,同时包含一个自我介绍的方法,用来输出该对象的索引信息
<script>
// 有一个从小到大排好序的数组,现在输入一个数,输入之后按照原来从小到大的排序插入到数组中
var arr = [1,2,3,4,5,6,33,33,55];
// arr.push(4);
// // 直接sort 只能排个位数
// arr.sort(function(a,b){
// return a-b
// })
// console.log(arr);
function abc(ary,num){
ary.push(num);
ary.sort(function(a,b){
return a-b
})
return ary;
}
var res = abc(arr,99);
console.log(res);
</script>
07-输出对象_学生信息对象
<script>
// 6、创建一个对象,该对象存储一个学生的信息,信息包括学号、身份证、年龄、性别,
// 同时包含一个自我介绍的方法,用来输出该对象的索引信息
var obj = {
id:1,
idCard:4114021991000000,
age:18,
sex:"女",
desc:function(){
// console.log(obj.id);
// console.log(obj.idCard);
// console.log(obj.age);
for(key in obj){
console.log(obj[key]);
}
}
}
obj.desc()
</script>
08-数据类型存储_堆栈内存
<!-- 栈内存:基本数据类型 -->
<script>
// var num = 10;
// var num2 = num;
// num2 = 200
// console.log(num);//10
// console.log(num2);//200
// var str = "10";
// var boo = true;
var obj = {
name:"of",
age:18,
address:"北京海淀"
}
var obj1 = obj;
obj1.name="哈哈哈哈"
console.log(obj.name);
console.log(obj1.name);
</script>
一、数据类型之间存储的区别(重点)
-
数据类型分成
-
基本数据类型
-
number string boolean null undefined
- 复杂数据类型
Object Array ....
可以通过new 关键字创建出来的对象 都是复杂数据类型
数据类型存储区别
-
我们的变量在内存里,存储空间里分成两种 堆和栈
-
栈内存:比较小的内存:主要存储基本数据类型
-
堆内存:比较大的内存:主要存储复杂数据类型
var num = 10;
var num2 = num;
num2 = 200
console.log(num);//10
console.log(num2);//200
相当于把num的值复制了一份给num2
-赋值以后两个数据没有关系 互不影响