【发布时间】:2014-01-23 17:26:41
【问题描述】:
这是按预期工作的第一个代码示例:在其余代码中,这用作过滤器,并将匹配来自 myids 的 2 个项目,即 objectId 与 tWOsQhsP2Z 和 sStYrIU6lJ 匹配的 2 个项目:
return myids.objectId === "tWOsQhsP2Z" || myids.objectId === "sStYrIU6lJ";
因为我需要从数组中传递任意数量的 id,所以我正在尝试像这样重构代码:
return myids.objectId === ("tWOsQhsP2Z" || "sStYrIU6lJ");
这个新代码的问题是使用返回值的过滤器将只返回一项,即 objectId 为 tWOsQhsP2Z 的一项。
您知道如何重构第二个代码,以便保留单个代码“myids.objectId”但返回所有 objectIds 值的匹配项吗?
【问题讨论】:
-
你可以使用某种形式的“包含?”在 JS 中,例如,将选项放在一个数组中,然后查看 objectId 是否包含在该数组中。您可以手动执行此操作,也可以使用为您提供此功能的多个库中的任何一个,例如 lo-dash、下划线、jQuery 等。
-
(["tWOsQhsP2Z", "sStYrIU6lJ"].indexOf(myids.objectId) != -1) -
如果 ID 在数组中,我不明白
=== ("tWOsQhsP2Z" || "sStYrIU6lJ")是如何关联的,因为它显示了硬编码的值。您是说要搜索数组吗?如果是这样,您是否正在寻找答案,因为这是一项非常常见的任务。 -
可能与此重复:short hand for chaining logical operators in javascript? ...或为此:Best way to find an item in a JavaScript array? 只需一点点努力即可轻松找到两个答案。
标签: javascript