<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// var arr1 = [1, 2, 3];
// //第一种
// function reverse1(array) {
// var newArr = [];
// for (var i = array.length - 1; i >= 0; i--) {
// //newArr.length最开始是0
// console.log(newArr.length);
// newArr[newArr.length] = array[i];
// }
// return newArr;
// }
// console.log(reverse1(arr1));
// //为什么length变成3了
// console.log(reverse1(arr1).length);
// //第二种方法
// var array = [1, 2, 3, 4, 5, 6];
// function reverse2(array) {
// for (var i = 0; i < array.length / 2; i++) {
// var temp = array[i];
// array[i] = array[array.length - 1 - i];
// array[array.length - 1 - i] = temp;
// }
// return array;
// }
// array = reverse2(array);
// console.log(array);
// var arr5 = ["a", "b", "c", "d", "a", "b", "e"];
// //{}是一个对象,存储键和值
// //不太理解这个
// var json = {};
// for (var i = 0; i < arr5.length; i++) {
// //[]表示对象的属性和方法,json[arr5[i]]相当于json.arr5[i]
// //第一次执行else语句。
// // console.log(json[arr5[i]]);
// if (json[arr5[i]]) {
// json[arr5[i]] += 1;
// } else {
// json[arr5[i]] = 1;
// }
// }
// console.log(json);
//思路:创建一个新数组,循环遍历,只要新数组中有老数组的值,就不再添加了
var arr2 = [1, 2, 3, 4, 5, 4, 3, 2, 0];
console.log(arr2);
console.log(fn3(arr2));
function fn3(array) {
var newArr = [];
for (var i = 0; i < array.length; i++) {
//开闭原则
var bool = true;
//每次都要判断数组中是否有旧数组中的值。
for (var j = 0; j < newArr.length; j++) {
if (array[i] === newArr[j]) {
bool = false;
}
}
if (bool) {
newArr[newArr.length] = array[i];
}
}
return newArr;
}
</script>
</body>
</html>
<script>
//对象本身没有length,所以不能用for循环遍历
//要用for...in...循环
var aaa = { "1": "我最爱", "2": "吃", "3": "红烧肉" };
for (var k in aaa) {
console.log(k);
console.log(aaa[k]);
}
var json = {};
console.log(json);
for (var i = 1; i < 10; i++) {
json[i] = i * 10;
}
console.log(json);
//参数赋值的时候,复杂数据类型传地址(堆)
var obj = new Object();
obj.name = "zs";
fn2(obj);
console.log(obj);
function fn2(obj) {
obj.name = "花花";
}
//简单数据类型传数值(栈)
var num = 1;
fn1(num);
console.log(num);
console.log(fn1(num));
function fn1(sz) {
num = sz * 5;
return num;
}
//数组定义方法
var arr1 = [1, 2, 3];
var arr2 = new Array(1, 2);
var str1 = new String("abc");
var str2 = "abc";
// instanceof 表示是否符合对象
console.log(arr1 instanceof Array);
console.log(arr2 instanceof Array);
console.log(str1 instanceof String);
console.log(str2 instanceof String);
//数组转换
console.log(arr1);
console.log(arr1.toString());
console.log(typeof arr1.toString());
//join是把数组元素用特殊方式链接成字符串
//参数决定用什么链接,无参默认用逗号链接
var arr = ["小姐姐", "有", "一只", "加菲猫"];
var str1 = arr.join();
var str2 = arr.join(" ");//如果用空格,则是空格链接
var str3 = arr.join("");//用空字符串链接,则无缝链接
console.log(str1);
console.log(str2);
console.log(str3);
var arr = [];
console.log(arr.push(1));
fn(1, 2);
fn(1, 2, 3, 4, 5);//实参
function fn(a, b) {
//只在函数中使用,实参的数组
//a,b是形参
console.log(arguments);
//伪数组
//数组排序:sort(功能很强大,能对数字和字母进行排列)
//问题:只能通过第一位排列,解决问题方法:设计的时候就是这么设计,可以通过回调函数
var arr2 = [9, 3, 7.45, 43, 86, 1, 4, 0, 32, -6];
console.log(arr2);
console.log(arr2.sort());
console.log(arr2.sort(function (a, b) {
return a - b;
}));
var arr4 = ["鼠标", "键盘侠客", "租房", "智齿两颗"];
arr4.every(function (element, index, array) {
console.log(element);
console.log(index);
console.log(array);
return true;
});
//filter返回值是一个新数组,return为true的数组。
var arr1 = arr4.filter(function (ele, index, array) {
//ele.length 表示元素的字符长度
if (ele.length > 2) {
return true;
}
return false;
});
alert(arr1);
}
</script>