使用對(duì)象模擬模擬實(shí)現(xiàn)pop/push,shift/unshift
"use strict"
let users = {
0:{name: "Zhao", age: 23},
1:{name: "Qian", age: 21},
2:{name: "Sun", age: 25},
length: 3,
//在末端刪除一個(gè)對(duì)象并返回
pop(){
//容錯(cuò)機(jī)制:length為 0 時(shí) users 對(duì)象為空
if(this.length == 0){
alert("刪除失敗,users 為空")
return;
}
//臨時(shí)保存要?jiǎng)h除的屬性
let moment = this[this.length - 1];
//刪除屬性
delete this[this.length - 1];
//length 自減
this.length--;
return moment;
},
//在末端添加一個(gè)對(duì)象
push(user){
this[this.length] = {name:user.name,age:user.age};
this.length++;
},
//在首端刪除一個(gè)對(duì)象,并返回被刪除對(duì)象
shift(){
//提取要?jiǎng)h除對(duì)象
let userName = this[0].name;
let userAge = this[0].age;
//元素左移一位
if(this.leftMove()){
//this.length自減
this.length--;
return {userName, userAge};
}
else{
alert("操作失??!");
return;
}
},
//在首端添加一個(gè)對(duì)象
unshift(user){
//右移
this.rightMove();
//首端添加對(duì)象
this[0] = user;
//this.length自增
this.length++;
return;
},
//
//將 users 整體元素左移一位
//this.length == 0 返回 false,否則返回 true
leftMove(){
//length == 0 返回false
if(this.length == 0){
return false;
}
for(let i = 0; i < this.length - 1; i++){
this[i] = object.assign({}, this[i + 1]);
}
return true;
},
//將 users 整體元素右移一位
rightMove(){
if(this.length == 0){
return;
}
for(let i = this.length - 1; i >= 0; i--){
//復(fù)制 this[i] 的副本并返回給 this[i + 1]
this[i + 1] = Object.assign({}, this[i]);
}
}
}
//-------------------------------------------------------分割線-------------------------------------------------------
//測(cè)試用例
function printUsersFn(){
alert("指令集: \n1.pop \n2.push \n3.unshif\n" +
"4.shift \n520.printEvery");
}
//指令輸入
function scanfOlder(){
return prompt("請(qǐng)輸入指令", "");
}
//屬性輸入,并返回一個(gè)對(duì)象
function scanfItem(){
let name = prompt("請(qǐng)輸入名稱(chēng):","");
let age = prompt("請(qǐng)輸入年齡:","");
return {name,age};
}
//打印所有對(duì)象
function printEvery(users){
let userStr = "";
for(let i = 0; i < users.length; i++){
userStr += `${users[+i].name} + ${users[+i].age} \n`;
}
alert(userStr);
}
//指令枚舉
function userFn(users){
switch(scanfOlder()){
case '1':users.pop(); break; //尾端刪除一個(gè)元素
case '2':users.push(scanfItem()); break; //尾端添加一個(gè)元素
case '3':users.unshift(scanfItem()); break; //首端添加一個(gè)元素
case '4':users.shift(); break; //首端刪除一個(gè)元素
case 'length':alert(users.length); break; //打印 users.length
case '520':printEvery(users); break; //打印所有元素
default:alert("指令錯(cuò)誤!");
}
}
while(true){
//打印指令集
printUsersFn();
//輸入指令并執(zhí)行
userFn(users);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。