保存对象键值时出现问题



将插入和移除修改为仅在保险箱打开时有效,如果保险箱关闭则返回请先打开保险箱

所以我所有的测试用例都工作正常,但我希望能够做到以下几点:在通过remove方法删除元素后,我想首先访问元素的大小值保存它,然后删除它,这样我就可以把删除的大小恢复到保险箱。

我试着自己做,但我不知道如何编码,有什么建议吗?

class Safe {
constructor(safeSize, passcode) {
this.storage = [];
this.safeSize = safeSize;
this.oldSafeSize = this.safeSize;
this.passcode = passcode; // <---- Modify Safe to have a passcode attribute
this.isOpen = this.isOpen; //  <---- Add isOpen attribute to the Safe Class                     
}
insert(name, size) {
//add restriction for insert to only work if this.isopen == true
if (this.isOpen == true) {
if (this.safeSize - size >= 0) {
this.safeSize -= size;
this.storage.push({
name,
size
}); // push it as an object
return true + " still accepting";
}
return false + " size limit reached";
} //end of isOpen tesecase
return "Please open the safe first"
}
remove(test) {
if (this.isOpen == true) {
let shouldSkip = false;
let message = "";
this.storage = this.storage.filter(element => {
if (element.name == test && !shouldSkip) {
//   let temporarySize= this.safeSize;
shouldSkip = true;
this.storage.pop(element);
//adding the size back to the main safe only after
//deleting an element
//   this.safeSize = this.oldSafeSize - temporarySize;
message = "The item " + element.name + " Has been removed"
return false;
}
return true;
});
if (!shouldSkip) message = test + " Item not found";
return message;
}
return "Please open the safe first"
}
setPassCode(passWord) {
if (this.passcode == undefined) {
this.passcode = passWord;
return "Passcode has been set"
}
return "please reset passcode first" // todo make a reset password function
}
resetPassCode(providedPasscode) {
if (this.passcode == undefined) {
return "Set a passcode first"
}
if (providedPasscode == this.passcode) {
this.passcode = undefined
return "Passcode has been reset"
}
return "Wrong passcode" // or this.passcode != providedPasscode

}
openSafe(testCode) {
if (this.passcode == testCode) {
this.isOpen = true
return "The safe is open and ready to use"
}
return "Wrong safe passcode"
}
closeSafe() {
this.Open = false;
return "The safe is closed"
}
} // end of class
const safe = new Safe(10);

测试点:

safe.setPassCode("8642"); // => "Passcode has been set"
safe.insert("laptop", 8); // => "Please open the safe first"
safe.remove("laptop"); // => "Please open the safe first"
safe.openSafe("7531"); // => "Wrong passcode"
safe.openSafe("8642"); // => "The safe is open and ready to use"
safe.insert("watermelon", 7); // => true
safe.remove("watermelon"); // => {name: "watermelon", "size: 7"}
safe.closeSafe(); // => "The safe is closed"
safe.insert("watermelon", 7); // => "Please open the safe first"

我刚发现一个错别字。

closeSafe() {
// this.Open = false;
this.isOpen = false;
return "The safe is closed";
}
remove(test) {
if (this.isOpen == true) {
let shouldSkip = false;
let message = "";
this.storage = this.storage.filter(element => {
if (element.name == test && !shouldSkip) {
this.safeSize += element.size; // you've done similar job in insert method
shouldSkip = true;
this.storage.pop(element);
//adding the size back to the main safe only after
//deleting an element
//   this.safeSize = this.oldSafeSize - temporarySize;
message = "The item " + element.name + " Has been removed"
return false;
}
return true;
});
if (!shouldSkip) message = test + " Item not found";
return message;
}
return "Please open the safe first"
}

获取元素的大小并从safeSize中减去它。

相关内容

最新更新