1.面包管理器
function bread() {
var num = 10;
var operation = {
setNum: function (n) {
num += n;
console.log(num);
},
sellnum: function () {
num--;
console.log(num);
}
}
return operation;
}
var text = bread();
text.setNum(20);
text.sellnum();
text.sellnum();
text.sellnum();
text.sellnum();
text.setNum(10);
2. 冒泡排序
var arr = [2, 3, 4, 5, 6, 9, 8, 7, 1];
function maopao() {
// var len = arguments.length;
//arguments的长度看的是传入参数列表的个数,所以我们传入数组的时候 maopao(1, 2, 3, 4, 5, 6, 7, 78);这样传才能用arguments判断
var len = arr.length;
console.log(len);
for (var j = 0; j < len - 1; j++) {
var flag = true;
for (var i = 0; i < len - j - 1; i++) {
var temp;
if (arr[i] > arr[i + 1]) {
flag = false;
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
if (flag) {
break;
}
}
}
maopao(arr);
console.log(arr);
3.班级名单管理器
一个班级,学生名字保存在一个数组里,两个方法写在函数中的一个对象中,
第一个方法加入班级,第二个方法离开班级,
每次加入或离开,都需要打印新的学生名单
var arr = ['小明', '小华', '小家'];
function classroom(arr) {
var nameList = {
join: function (newStudent) {
arr.push(newStudent);
console.log(arr);
},
leave: function (Student) {
var index = arr.indexOf(Student);
//数组的indexOf方法使用:通过元素内容找对对应元素的下标,如果找不到这个元素就返回-1
console.log(index);
arr.splice(index, 1);
// 数组的splice方法使用:array.splice(index,howmany,item1,.....,itemX)
//index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
//howmany 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
console.log(arr);
}
};
return nameList;
}
var text = classroom(arr);
text.join('小才');
text.leave('小菜');
4.累加器
function add() {
var num = 0;
function addOne() {
num++;
console.log(num);
}
return addOne;
}
var text = add();
text();
text();
text();
text();
text();
text();
text();
5.计算器构造函数(有错误-已经改正-在构造函数内this.arr和arr的区别)
写一个构造函数,接收数字类型的参数,参数数量不定,完成参数相加和相乘的功能
//自己的做法
function Calculator() {
this.arr = arguments;
var sum = this.arr[0];
var mul = this.arr[0];
this.add = function () {
for (var i = 1; i < this.arr.length; i++) {
sum += this.arr[i];
}
console.log(sum);
};
this.multiply = function () {
for (var i = 1; i < this.arr.length; i++) {