javascript - 有没有更好的写法 if (argList[foo] === "bar"|| argList === "bar")?

标签 javascript algorithm object if-statement

我有一个 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 时,我的 var 不是 argList["foo"] === "bar"而是 argList === "bar"

最佳答案

为了确保属性存在,恕我直言,最好使用助手作为:

  • typescript elvis 大小写
  • Lodash _.get() 方法

    if (_.get(argList, "foo") === "bar"|| argList === "bar"){ //一些代码 }

只有当您尝试访问更深层次的 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

关于javascript - 有没有更好的写法 if (argList[foo] === "bar"|| argList === "bar")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56457858/

相关文章:

algorithm - 失去健康的迷宫中的最短路径

algorithm - 复杂度为 Θ(n^2 log n) 的归并排序算法

algorithm - 如何使用双向 BFS 找到最短路径?

javascript - 覆盖 JavaScript 中比较运算符的默认行为

javascript - 使用函数结果读取 JS 中的对象文字

javascript - 如何测试 Jasmine 中的范围对象?

javascript - JSFIDDLE 无法在我的页面上运行

javascript - 从 Chrome 本地存储中提取值未将值分配给局部变量

javascript - AngularJS:多个模块与多个 Controller

javascript - 如何在Javascript中克隆整个 "object"?