Есть ли лучший способ написать if (argList [foo] === "bar" || argList === "bar")? - PullRequest
3 голосов
/ 05 июня 2019

У меня есть 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;
	}

Поэтому, когда я запускаю startTool из startCreate, моя переменная не argList ["foo"] === "bar", а argList === "bar"

1 Ответ

2 голосов
/ 05 июня 2019

Чтобы убедиться, что свойство существует, ИМХО лучше использовать помощника как:

  • машинопись регистр Элвиса
  • Лодаш _.get()method

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...