javascript方法接受字符串或字符串数​​组

时间:2017-09-07 12:31:29

标签: javascript arrays

我正在为相当大的服务构建一个包装器库,以便我正在使用的团队可以更轻松地开发使用此服务。

基本上,其中一个API调用称为“subscribe”,以便程序订阅一个或多个项目(以便跟踪其更改)。 API调用需要1个参数。文档显示了这一点:

  • (字符串,必填)名称标识符
  • OR(字符串,必填)ID标识符
  • OR(array,optional)名称或ID标识符的JSON数组

我确实弄清楚如何使用可选参数,但我无法弄清楚在javascript中制作“x或y”类型的方法。

4 个答案:

答案 0 :(得分:1)

您可以检查参数并将单个值转换为数组并使用该数组。



def f(x):
    """Return the argument
    :type x: bool
    :param x: the value to return.

    :rtype: bool
    :returns: the argument.

    Examples :
    >>>f(True)
   True
   """
return x

function fn(parameter) {
    return (Array.isArray(parameter) ? parameter : [parameter]).map(a => 'item' + a);
}

console.log(fn(1));
console.log(fn('abc'));
console.log(fn([3, 4]));




答案 1 :(得分:0)

与Java相同,您可以编写一个方法的几个原型,每个原型采用不同数量的参数。调用时,将自行调用正确的方法。

例如:

/* You must check if i is a String */
function method(i){
}

/* You must check if i is a String and j is an Array */
function method(i, j){
}

现在,关于输入的类型,JavaScript不会检查方法原型中的类型,例如Java或C.因此,您需要在方法中控制输入的类型。

您可以在控制类型时使用isArray()方法或/和TypeOf运算符。

答案 2 :(得分:0)

更简单的方法可能是使用“rest参数”使其成为可变函数。您可以定义两个参数,第一个必需参数,其余参数允许零或更多。

function subscribe(item, ...items) {
  // item is required
  // items may be zero or more additional items
}

您实际上并不需要两个参数,除非文档更清楚地显示所需的参数。

然后他们可以用单个参数调用它,或者如果他们已经有一个数组,他们可以使用扩展语法来使用它。

function subscribe(item, ...items) {
  console.log("Found: %s, Then: %s", item, items);
}

subscribe("one", "two", "three");

var my_items = ["one", "two", "three"];

subscribe(...my_items);

答案 3 :(得分:0)

只需检查输入参数以获取Array实例的字符串类型,如下所示:



function method(prm) {
	if (prm instanceof Array) {
  	console.info("(array, optional) A JSON array of Name or ID identifiers");
    return;
  }
  
  if(typeof(prm) === "string") {
  	console.info("Name identifier|ID identifier");
  	return;
  }
  
  console.info("Unknown argument");
};

method("id");
method("name");
method(["id", "name"]);
method(1);