一、计算1-100所有数字相加的和
<script>
// 计算1-100所有数字相加的和
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
</script>
二、var arr=[1,5,2,9,7,4] 把数组元素由小到大排序输出
方法1 :冒泡排序法
<script>
// var arr=[1,5,2,9,7,4] 把数组元素由小到大排序输出
var arr = [1, 5, 2, 9, 7, 4];
/*
第一次比5次
第二次比4次
第三次比3次
第四次比2次
第五次比1次
arr.length = 6
*/
for (var i = 0; i < arr.length - 1; i++) { //外部循环 控制总共比较的次数
for (var j = 0; j < arr.length - 1 - i; j++) { //内部循环 控制每次比较的次数
if (arr[j] > arr[j + 1]) { //如果前面的值大于后面的值 则交换
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
console.log("第" + (i + 1) + "轮排序后:" + arr);
}
console.log("最后的数组排序:" + arr);
</script>
方法2:插入排序法
<script>
// var arr = [1, 5, 7, 6, 9, 0]; 从小到大排列
// 方法2
/*
1.默认第一个元素已经被排序
2.第二个元素和第一个元素比较,然后调换位置
3.第三个元素和第二个元素及第一个元素比较,按顺序调换位置
.....依次类推
*/
var arr = [1, 5, 7, 6, 9, 0];
//定义一个属性 来统计排序了多少次
var count = 0;
// 从第二个元素开始与第一个元素开始比较所以 下标i = 1 因为外循环要比较5次 所以i<arr.length
for (var i = 1; i < arr.length; i++) { //大循环
//规律是 第一轮比一次,第二轮比二次 .... 第n次比n次
for (var j = 0; j < i; j++) { //内部循环
// 如果后面的元素比前面的元素小 ,则交换
if (arr[i] < arr[j]) {
var tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
//交换一次统计一次
count++;
}
}
}
console.log(arr, "循环" + count + "次");
</script>
三、作业的深拷贝
注意多层次对象里面的引用类型需要多次判断进行多次拷贝,否则内部引用类型完成的是浅拷贝,内存地址是一样的
// 作业 对象的深拷贝
<script>
var person1 = {
name: "lisi",
age: 10,
frend: ["a1", "a2", "a3", { name: "lisi", age: 10 }], // frend属性数组是一个引用数据类型,对应的是一个内存地址
family: { // family属性是引用数据类型,也是一个内存地址。
number: 123,
address: "四川成都",
o1: { // 思考,如果是多层次的引用数据类型嵌套,怎样拷贝?
o2: {
name: "a1"
}
}
}
}
// 深拷贝需要创建一个新的对象
var person2 = {};
for (var item in person1) {
// 如果item属性不是引用数据类型 则直接拷贝
if (typeof (person1[item]) != "object") {
person2[item] = person1[item];
}
//如果item属性是数组 则需要新创建一个数组 遍历数组进行拷贝
else if (Array.isArray(person1[item])) {
// 创建一个新数组arr
var arr = [];
for (var o = 0; o < person1[item].length; o++) {
// 在arr数组的末尾追加元素
arr.push(person1[item][o])
}
// arr的值赋值给person2 [item]属性
person2[item] = arr;
}
// 如果item属性是对象则需要在创建一个新的对象赋值
else if (typeof (person1[item]) === "object") {
var key = {};
for (var k in person1[item]) {
key[k] = person1[item][key]
}
// 对象key的值赋值给person2 [item]属性
person2[item] = key;
}
}
console.log(person2.frend === person1.frend);
</script>