Javascript 中数组的每个元素的 toString() [重复]

2023-12-29

我想查找一个元素(可能是字符串或数字)是否位于数组内。数组是test元素是value。到目前为止一切顺利,我有这个代码:

function compare(value, test) {
  // We need to stringify all the values to compare them with a string
  return test.map(function(value){
    return value.toString();
    }).indexOf(value) > -1;
  }
alert(compare("2", [1, 2, 3]));
alert(compare("2", ["1", "2", "3"]));

它确实有效 http://jsfiddle.net/franciscop/b97x4vex/。然而它看起来非常复杂,因为indexOf() 使用严格平等 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Description这不适合我的需要。 Ahacky方法将执行以下操作,这也有效:

return test.join("|").split("|").indexOf(value) > -1;

然而很容易看出,如果测试是["a", "b|c", "d"]那么我们就有问题了,因为我们要比较a, b, c & d代替a, b|c, d。寻找一个安全性格也不是一个选项,因此该解决方案无效。有没有更简单的方法来做indexOf() with 正常平等?

编辑:我的第一次尝试是这样做,它从严格相等中意外地返回错误,这就是我以复杂的方式做到这一点的原因:

["1", "2", "3"].indexOf(2);

你可以做类似下面的事情吗?

function compare(value, test) {
  return test.indexOf(Number(value)) > -1 || 
        test.indexOf(String(value)) > -1;
}
alert(compare("2", [1, 2, 3]));
alert(compare("2", ["1", "2", "3"]));

另一种方法是使用数组.prototype.some https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some:

function compare(value, test) {
  var num = Number(value),
      str = String(value);

  return test.some(function(val) {
    return val === num || val === str;
  });
}
alert(compare("2", [1, 2, 3]));
alert(compare("2", ["1", "2", "3"]));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 中数组的每个元素的 toString() [重复] 的相关文章

随机推荐

  • 如何在 Silverlight 4 应用程序中获取 Outlook 2003 数据

    是否可以将 Outlook 2003 自动化与 Silverlight 4 结合使用 或者也许有一些不同的方法可以在 Silverlight 应用程序中使用 Outlook 2003 MAPI 我正在使用 Silverlight 4 并尝试
  • Bootstrap模式弹出确认防止多次点击

    button name remove levels on click function e var form this closest form e preventDefault confirm modal backdrop static
  • 从 Python 脚本子进程获取输出

    这可能是一个愚蠢的问题 但我有一个启动子进程的 Python 脚本 也是一个 Python 脚本 并且我需要该子进程返回三个整数 如何从启动子进程的 Python 脚本获取这些返回值 我是否必须将整数输出到标准输出 然后使用 check o
  • SharedPreferences.onSharedPreferenceChangeListener 未被一致调用

    我正在注册一个像这样的首选项更改侦听器 在onCreate 我的主要活动 SharedPreferences prefs PreferenceManager getDefaultSharedPreferences this prefs re
  • 适用于 Android 的 Google Play 音乐 API

    我正在开发一款 Android 音乐应用程序 我需要两件事 获取艺术家的专辑封面 专辑名称 曲目名称等 打开 Google Play 页面购买这张专辑 首先我目前正在使用iTunes API http www apple com itune
  • 如何操作 jqGrid 的搜索/过滤器?

    我有一个带有导航栏的 jqGridsearch true and multipleSearch true 我想在我的 UI 中添加一个按钮 自动向搜索添加附加规则 我尝试直接操作过滤器的 postData 但以这种方式添加的值不会显示在搜索
  • Java VS C# 中的 intBitsToFloat 方法?

    在 C 中将位转换为浮点数时 我得到了错误的数字 让我们使用这个位number 1065324597 In Java 如果我想从位转换为浮点数 我会使用intBitsToFloat method int intbits 1065324597
  • 在 BigQuery 中安排查询

    我有一个 BigQuery 查询 它将两个表联合起来 每日 Google Analytics 导出 我想要的是将查询保存为视图或表 但随着新的 Google Analytics 数据加载到 BigQuery 中 最终视图 表每天会自动更新
  • 如何使用 FileProvider 共享任意路径的文件?

    我的应用程序允许用户下载一些内容并将其存储在他选择的文件夹中 我想创建一个 ContentProvider 来共享这些文件 但当下载的文件存储在应用程序默认路径之外时 我不知道该怎么做 我试图声明以下文件路径
  • 所有 gms/firebase 库必须使用完全相同的版本规范 Android Studio

    我知道这个问题已经被问过很多次了 但我无法弄清楚 让我解释一下 5 月 2 日 Firebase 宣布 Firebase Android SDK 现在拥有独立的版本号 检查这里 Firebase Android 发行说明 https fir
  • .NET webservice - 快速确认,但继续在后台处理

    我正在构建一个将由供应商的应用程序使用的 NET Web 服务 但我不确定如何完成以下任务 供应商将致电我的网络服务并提供一些信息 但希望快速返回确认信息 仅说明我收到了他们的信息 他们不关心我用它做什么 也不想确认我已经完成处理 我传递的
  • 重新排序数组

    比如说 我有一个如下所示的数组 var playlist artist Herbie Hancock title Thrust artist Lalo Schifrin title Shifting Gears artist Faze O
  • 将 Bladejs 与 Meteor 结合使用

    我最近将节点刀片智能包添加到我的流星中 并且静态内容显示良好 但是 我无法使用任何模板变量 在我安装 Blade 之前 模板变量与车把配合得很好 有人知道我做错了什么吗 控制台输出 ReferenceError player is not
  • 是否可以将 MKS Integrity 存储库导入 git 中?

    我只需要源树及其历史记录 我现在不关心需求 问题 我用命令行玩了一下 看看是否可以获得主干和一些开发路径的更改包列表 我认为应该可以为每个更改包提取差异 并使用它来重放自 git 中第一次提交以来的所有更改 像这样的东西 获取第一个提交并将
  • !clrstack -p 不给出调用堆栈中方法的参数值

    我们正在尝试使用 Windbg 分析 w3wp 内存转储 我们发现 w3wp 进程由于堆栈溢出而崩溃 我加载了 psscor4 dll 并通过发出 clrstack 获取了调用堆栈 但我也想知道传递给方法的参数 如果我发出 clrstack
  • 从自定义视图启动 AsyncTask 的最佳实践

    产生耗时的计算线程是很常见的 稍后我们需要更新Activity or Fragment与计算结果 我一直遵循以下准则 到目前为止 它对我来说效果很好 AsyncTask需要onPostExecute UI Fragment Use setR
  • Angular-ui-bootstrap 模式和打字稿

    我正在将 ngDialog 与 Angular 和 Typescript 一起使用 但是我正在尝试更改为 Angular ui boostrap 模式 因为它看起来更酷且更易于使用 我有一个场景 我使用例如 AddressListContr
  • WebView.loadUrl() 中的 Android JS

    我想在 WebView 中加载网页 但删除网页的部分内容 因此 我创建了一个自定义 WebViewClient 并且 在 onPageFinished 中 我执行了一些 javascript 来删除一些元素 然后 我使 WebView 可见
  • -ms-transform 不适用于 IE10(及以下版本)中的表头组 (thead)

    谁能帮我找到一种方法让 ms transform 在表头上工作 上下文是 我正在重新定位标题 使用 Javascript 和 CSS 转换 以使其在用户向下滚动到标题不再可见的位置时粘在屏幕顶部 并且使用如果没有可见的列标题 我可能也无法读
  • Javascript 中数组的每个元素的 toString() [重复]

    这个问题在这里已经有答案了 我想查找一个元素 可能是字符串或数字 是否位于数组内 数组是test元素是value 到目前为止一切顺利 我有这个代码 function compare value test We need to stringi