如何只保留数组中符合特定条件的项?

2023-11-23

我有一个数组,我想过滤它以仅包含符合特定条件的项目。这可以用 JavaScript 完成吗?

一些例子:

[1, 2, 3, 4, 5, 6, 7, 8] // I only want [2, 4, 6, 8], i.e. the even numbers

["This", "is", "an", "array", "with", "several", "strings", "making", "up", "a", "sentence."] // I only want words with 2 or fewer letters: ["is", "an", "up", "a"]

[true, false, 4, 0, "abc", "", "0"] // Only keep truthy values: [true, 4, "abc", "0"]

为此,您可以使用Array#filter()方法,在 ECMAScript5 中引入。除 IE8 及更低版本以及旧版本的 Firefox 之外,所有浏览器均支持它。如果出于某种原因您需要支持这些浏览器,您可以使用polyfill对于方法。

filter()将函数作为其第一个参数。对于数组的每个项目,您的函数都会传递三个参数 - 当前项目的值、其在数组中的索引以及数组本身。如果你的函数返回true(或真实值,例如1, "pizza", or 42),该项目将包含在结果中。不然就不会了。filter()返回一个newarray - 您的原始数组将保持不变。这意味着您需要将值保存在某个地方,否则它就会丢失。

现在,在问题的示例中:

var myNumbersArray = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(myNumbersArray.filter(function(num){
  return !(num % 2); // keep numbers divisible by 2
}));
console.log(myNumbersArray); // see - it hasn't changed!

var myStringArray = ["This", "is", "an", "array", "with", "several", "strings", "making", "up", "a", "sentence."];
console.log(myStringArray.filter(function(str){
  return str.length < 3; // keep strings with length < 3
}));
console.log(myStringArray);

var myBoolArray = [true, false, 4, 0, "abc", "", "0"];
console.log(myBoolArray.filter(Boolean));
// wow, look at that trick!
console.log(myBoolArray);

为了完整起见,还有一个也使用索引和数组参数的示例:从数组中删除重复项:

var myArray = [1,1,2,3,4,5,6,1,2,8,2,5,2,52,48,123,43,52];
console.log(myArray.filter(function(value, index, array) {
   return array.indexOf(value) === index;
}));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何只保留数组中符合特定条件的项? 的相关文章

  • 如果用户禁用了 javascript,如何回退到完全不同的索引页面?

    我有一个大型 动态生成的单页网站 该网站严重依赖 javascript 我想为没有 javascript 的人提供后备 每个版本必须有不同的 php 代码 所以基本上我需要一个完全不同的索引页面 我不想将所有内容都包装在 javascrip
  • iPhone Web 应用程序禁用缓存

    我使用 PHP 构建了一个 iPhone 网络应用程序 主 也是唯一 页面包括苹果移动网络应用程序支持 and 苹果触摸全屏元标记 以便在添加到主屏幕后可以全屏运行 然而 似乎每次我从主屏幕启动应用程序时 都会使用页面的缓存版本而不是刷新页
  • EXT JS中有全局变量吗

    在 java 和 C 中 我们可以全局存储变量并从项目中的任何位置访问它的值 比如说 我在一个名为Residence我正在保存residenceNumber这是一个INT到一个名为的全局变量houseNumberGlobalVariable
  • perl6 取消选择数组或列表元素的快速方法是什么?

    要在 perl6 中从数组中选择多个元素 很简单 只需使用索引列表 gt my a lt a b c d e f g gt gt a 1 3 5 b d f 但要取消选择这些元素 我必须使用 Set gt say a a keys Set
  • printf '%s\n' "${array[@]}" 每个数组元素打印一行是否正常?

    在我的 bash 脚本中 我包含了程序所需的一系列其他文件 然后我在帮助说明中打印这些内容 当我使用 printf 进行输出时 我得到了意想不到的结果 我读到 形式 array 通常是首选的扩展默认形式 所以我从它开始 我的数组声明 scr
  • Puppeteer 登录 Instagram

    我正在尝试使用 Puppeteer 登录 Instagram 但不知何故无法登录 你能帮助我吗 这是我正在使用的链接 https www instagram com accounts login https www instagram co
  • 填充表格数据的打印输出

    我知道这可能非常简单 但我在一个文件中有一些数据 例如 Artichoke Green Globe Imperial Star Violetto 24 deep Beans Lima Bush Baby Bush Lima Fordhook
  • Array.from 的时间复杂度

    时间复杂度是多少Array from 例如 const set new Set set add car set add cat set add dog console log Array from set time complexity o
  • pointdown 与 onclick:有什么区别?

    两者有什么区别onpointerdown and onclick事件处理程序 有任何实际差异吗 事件在 DOM 树上传播的方式不一样吗 是否有一些设备仅响应这些事件之一 我最初以为这只是pointerdown在触摸设备或笔中触发 但是onc
  • 如何在反应路由器的登录页面中隐藏导航栏

    我想隐藏登录页面中的导航栏 我确实做到了 但我在其他页面上看不到导航栏 此代码是 My App jsx 文件的一部分 我在 App 的状态中创造了历史 当路径名是 或 login 时 我会隐藏导航栏 有用 但随后我输入了 ID 和密码 然后
  • Django 管理中的自定义依赖下拉菜单

    我有一个按阶段模型的项目外键 我很难在 Django 管理页面中创建依赖的下拉列表 我想当用户从该项目的 项目下拉 阶段选择一个项目时 在第二个下拉菜单中显示 实现这一目标的最佳方法是什么 如果下拉列表根据其父级的值来过滤项目 那就太好了
  • 多个模板槽的相同槽内容

    在vuejs中 有没有一种方法可以为多个插槽设置相同的内容 而无需复制粘贴 So this
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • up() 和 down() 与 Ext.getCmp()

    我很困惑我需要在 up down 和 Ext getCmp ID 之间使用哪一个作为 grep 对象 对我来说 定义对象的 ID 并通过 Ext getCmp ID 检索对象更容易 而且代码看起来更干净 例如 console log thi
  • 使用预先存在的数据库创建 PhoneGap iOS 应用程序

    我最近开始开发一个使用 PhoneGap 版本 2 8 0 作为药物查找器的应用程序 过去 我创建了该工具的 Web 版本 它使用 jQuery Mobile 和 PHP 来访问远程 SQL 数据库 PhoneGap 似乎是一个很有吸引力的
  • jQuery 分钟和秒倒计时器

    我想创建一个 jquery 倒计时器 我尝试了以下代码 但它不起作用 我该怎么办 DEMO https jsfiddle net tbosn210 https jsfiddle net tbosn210 var interval setIn
  • Firefox 本地主机上的 Twilio 屏幕共享?

    目前 Firefox 中本地主机上的屏幕共享会引发以下错误 The request is not allowed by the user agent or the platform in the current context 这是我的代码
  • 删除移动设备上的 adsense

    我正在研究响应式设计 但在使用 adsense 时遇到了问题 我有一个广告应该显示在桌面设计上 但不能显示在移动设计上 因此 只有在桌面上查看网站时 才应将广告代码放置在 html 中 css 可以使用 display none 但这违反了
  • 将 html

    我有一些服务器端代码当前支持 http 字节范围请求 没有任何问题 但是 我希望能够在将转码后的块发送到客户端之前使用 ffmpeg 即时转码视频文件 位于磁盘上 但 ffmpeg 要求我在获取字节时给它一个寻道时间范围来自客户 给定客户端
  • JQuery 循环遍历动态元素并获取数据值

    我正在尝试使用可折叠面板来完成我的要求 sport on click function var thisId this attr id var thisChildren this sportlist thisChildren each fu

随机推荐

  • Tensorflow - 无法将操作转换为张量

    我想计算操作输出和张量之间的成对欧几里得距离 我正在使用建议的代码here 这是我的代码的要点 Suppose logits has shape 32 128 logits tf get default graph get operatio
  • WPF 触发器

    我试图设置一个触发器 当我获得的单元格值是某种类型时显示文本块 我已经成功地在相同的情况下显示了图像 但在这种情况下我不需要图像 而是一些文本 已注释掉几行以便测试 尝试使其工作 注释掉的代码有效 其中的文本块 text xxx 没有 这是
  • 关于小型基于 C 的向量和矩阵库的建议 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我需要一个用于 2d 和 3d 向量以及 3x3 和 4x4 矩阵的轻量级库 在基础C中 这样我就不会重新发明轮子 有什么建议么 Meschach是一个纯 C 向量 矩阵库 明显小于
  • preg_replace() 会改变我的字符集吗?

    我有以下代码似乎正在改变我的字符集 html echo html result html preg replace s html echo html result 但是 当我使用 t n r f v 作为我的模式而不是特殊字符 s它工作正常
  • Bluemix 新手,新应用程序出现错误“主机已被占用”

    我是 Bluemix 的新手 按照以下步骤创建应用程序 使用您的 Bluemix 帐户登录 Bluemix 打开目录菜单 从运行时部分 单击 Liberty for Java 在应用程序字段中 指定您的应用程序的名称 输入姓名 单击创建按钮
  • 覆盖Android后退按钮

    关于我为什么尝试这样做的一些信息 我正在使用 ActivityGroups 从 tabHost 活动打开一个活动 并将该新活动保留在选项卡下 那部分我已经有了 但是 在该新活动中 如果我使用后退按钮 它会将我直接退出选项卡活动 因此我必须单
  • 没有 'owned by' 属性的 Postgres 序列在 Django 1.3 中不会返回 id

    最近从 Oracle 迁移到 Postgres 并从 Django 1 2 升级到 1 3 后 我们在将对象保存到数据库时开始遇到问题 当调用 save 时 不会返回 id 即使通过标准 django 管理面板保存标准 django aut
  • android:选择图库中的多个图像并启动隐式意图

    如何获取所有选定图像的图像路径或仅将它们显示在我的应用程序中 当用户在图库中选择图像并按共享按钮时 我可以启动隐式意图并将其显示在我的 imageView 中 如下所示 ImageView iv ImageView findViewById
  • 将时间序列数据提供给有状态 LSTM 的正确方法?

    假设我有一个整数序列 0 1 2 并希望根据最后 3 个整数来预测下一个整数 例如 0 1 2 gt 5 3 4 5 gt 6 etc 假设我像这样设置模型 batch size 1 time steps 3 model Sequentia
  • 钩住时间编织块

    我想对 knitr 块进行计时 并记录使用 LaTeX 输出中的注释渲染它们所花费的时间 我尝试过以下钩子 now Sys time knit hooks set timeit function before if before now l
  • JavaScript 函数表达式前面的加号

    我一直在寻找有关立即调用函数的信息 在某个地方我偶然发现了这个符号 function console log Something 有人可以向我解释一下是什么吗 函数前面的符号意味着 做什么 它强制解析器处理以下部分 作为一种表达方式 这通常
  • 将边框应用于图像形状

    在我的应用程序中 我有不同形状的各种图像 如树 云 附有示例图片 我想以编程方式为这些形状添加边框 就像如果图像是树那么需要突出显示树的形状 我无法使用 callayer 因为它会将边框应用于 UIImageView 谁能指导我如何实现这一
  • GCC下未定义的引用与LTO交叉编译静态库

    我正在尝试使用 GCC 4 9 2 从 Linux x86 64 pc linux gnu 交叉编译 Windows x86 64 w64 mingw32 的应用程序 当构建链接到静态库的目标并使用链接时优化时 我从链接器中得到目标从库中使
  • 评估 Main(string[] args) 是否太过分了

    我有以下内容 想知道初始测试是否过度 static void Main string args if args Length 0 args null do X else do Y 换句话说 我要问的是 args Length 是否有可能为零
  • 如何在android 4.0 ICS中启用底部菜单按钮

    I want to enable bottom menu button and Which theme will be use for this menu button I try many theme but did not work f
  • 如何处理和提取图像中的文本

    我正在尝试使用 python cv2 从图像中提取文本 结果是可悲的 我找不到改进我的代码的方法 我相信在提取文本之前需要处理图像 但不确定如何处理 我尝试将其转换为黑白 但没有成功 import cv2 import os import
  • Jetpack Compose 性能问题仅发生在多模块项目中

    我在 Jetpack Compose 中开发了一个相当复杂的键盘布局 最初 布局工作正常 按下按键时动画运行非常流畅 不幸的是 由于事件而进行了几次重组之后 动画和一切都变得非常缓慢和滞后 我尝试对 Jave 方法调用进行采样 但我只能看到
  • Couchbase 4010 错误

    我一直在测试 Couchbase 5 并创建了一个名为fp conversion data其中包含一些 JSON 数据 我一直在尝试运行一些简单的查询 例如 SELECT FROM fp conversion data limit 5 我没
  • 移出的物体是否需要销毁?

    如果我移动构建a from b 还是吗必要的破坏b 或者我可以不这样做就逃脱吗 这个问题在实施过程中闪过我的脑海optional
  • 如何只保留数组中符合特定条件的项?

    我有一个数组 我想过滤它以仅包含符合特定条件的项目 这可以用 JavaScript 完成吗 一些例子 1 2 3 4 5 6 7 8 I only want 2 4 6 8 i e the even numbers This is an a