我有一个if
声明:
if (argList["foo"] === "bar" || argList === "bar"){
// some code
}
我想知道是否存在一种更短或更优雅的方式编写这种条件。
为什么我这样写这样的声明? 我有一个名为startTool(argList)的函数,另一个名为startCreate(argList)。
mod.zsh_apiStartTool = function(argList, callback) {
// some code
if (argList["tool"] === "measure" || argList === "measure"){
//some code to start the tool
}
if (argList["tool"] === "scanning"|| argList === "scanning"){
// some code to start the tool
}
ZSH_JS_API_ERROR(callback);
return;
}
mod.zsh_apiStartCreate = function(argList, callback) {
// some code
if (argList["tool"] === "measure"){
mod.zsh_apiStartTool("measure")
}
if (argList["tool"] === "scanning"){
mod.zsh_apiStartTool("scanning");
}
ZSH_JS_API_ERROR(callback);
return;
}
因此,当我从startCreate进入startTool时,我的变量不是argList [“ foo”] ===“ bar”,而是argList ===“ bar”
答案 0 :(得分:2)
要确保属性存在恕我直言,最好使用以下辅助对象:
Lodash _.get()
方法
if (_.get(argList, "foo") === "bar" || argList === "bar"){
// some code
}
仅当您尝试访问更深层次的argList [“ foo”] [“ bar”]
时,此问题才严重JSON.stringify
如果您知道您的对象中的“ bar”是确定性值,则可以通过另一种方法对对象进行字符串化处理并在此处查找值(因此,argList中没有其他属性可以容纳该对象) ):
JSON.stringify(argListObj).includes("bar")
const argListObj = { foo: "bar" };
const argListString = "bar";
console.log(JSON.stringify(argListObj).includes("bar"));
console.log(JSON.stringify(argListString).includes("bar");
// Console logs true, true