首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >由另一个数据组成的JavaScript过滤器数组

由另一个数据组成的JavaScript过滤器数组
EN

Stack Overflow用户
提问于 2015-09-03 05:12:11
回答 7查看 15.3K关注 0票数 13

我有一个数组对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
    { id:1, name: 'Pedro'},
    { id:2, name: 'Miko'},
    { id:3, name: 'Bear'},
    { id:4, name: 'Teddy'},
    { id:5, name: 'Mouse'}
]

我有一个ids为1,3,5的数组,

如何过滤数组对象,使其只保留第二个记录中的id?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-09-03 05:19:45

如果支持Array.includes(),则可以将其与Array.filter()一起使用以获取以下项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const array = [
  { id: 1, name: 'Pedro'},
  { id: 2, name: 'Miko'},
  { id: 3, name: 'Bear'},
  { id: 4, name: 'Teddy'},
  { id: 5, name: 'Mouse'}
];

const filterArray = [1,3,5];

const result = array.filter(({ id }) => filterArray.includes(id));

console.log(result);

如果不支持包含,则可以使用Array.indexOf()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var array = [
  { id: 1, name: 'Pedro'},
  { id: 2, name: 'Miko'},
  { id: 3, name: 'Bear'},
  { id: 4, name: 'Teddy'},
  { id: 5, name: 'Mouse'}
];

var filterArray = [1,3,5];

var result = array.filter(function(item) {
    return filterArray.indexOf(item.id) !== -1;
});

console.log(result);

票数 23
EN

Stack Overflow用户

发布于 2015-09-03 05:24:10

也许把Array.prototype.reduceArray.prototype.some结合起来。这将保持给定数组need的顺序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var data = [
        { id: 3, name: 'Bear' },
        { id: 4, name: 'Teddy' },
        { id: 5, name: 'Mouse' },
        { id: 1, name: 'Pedro' },
        { id: 2, name: 'Miko' },
    ],
    need = [1, 3, 5],
    filtered = need.reduce(function (r, a) {
        data.some(function (el) {
            return a === el.id && r.push(el);
        });
        return r;
    }, []);

document.write('<pre>' + JSON.stringify(filtered, 0, 4) + '</pre>');

要保持data的顺序,可以使用Array.prototype.filter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var data = [
        { id: 3, name: 'Bear' },
        { id: 4, name: 'Teddy' },
        { id: 5, name: 'Mouse' },
        { id: 1, name: 'Pedro' },
        { id: 2, name: 'Miko' },
    ],
    need = [1, 3, 5],
    filtered = data.filter(function (a) {
        return ~need.indexOf(a.id);
    });

document.write('<pre>' + JSON.stringify(filtered, 0, 4) + '</pre>');

票数 2
EN

Stack Overflow用户

发布于 2015-09-03 05:49:38

如果数据集很小,您可以使用任何提供的解决方案(使用indexOf的解决方案)。

然而,这些解都是O(n^2)的解,因此,在数据集足够大的情况下,滞后会变得明显。在这种情况下,您应该在选择元素之前构建一个索引。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function filterFast(data, ids) {
    var index = ids.reduce(function(a,b) {a[b] = 1; return a;}, {});
    return data.filter(function(item) {
        return index[item.id] === 1;
    });
}

一些基准测试可以测试这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32376651

复制
相关文章
Excel公式技巧:生成由a至z组成的数组
{“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”,”k”,”l”,”m”,”n”,”o”,”p”,”q”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”z”}
fanjy
2022/06/04
1.5K0
Excel公式技巧:生成由a至z组成的数组
table 是一个由 HashEntry 对象组成的数组
 table 是一个由 HashEntry 对象组成的数组 static final class Segment<K,V> extends ReentrantLock implements Serializable { /** * 在本 segment 范围内,包含的 HashEntry 元素的个数 * 该变量被声明为 volatile 型 */ transient volatile int count;
用户7365393
2021/10/08
7930
前端测试题:(解析)下面不是JavaScript由组成部分的是?
我们已经知道, ECMAScript是JavaScript的标准,所以一般情况下这两个词我们认为是一个意思。但是,实际上JavaScript的含义更大一些。一个完整的JavaScript实现应该有以下三个部分构成 :
舒克
2022/09/01
6520
前端测试题:(解析)下面不是JavaScript由组成部分的是?
由两个栈组成的队列2.由两个栈组成的队列
2.由两个栈组成的队列 ---- 题目: 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。 解题: /** * * 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。 * * @author dream * */ public class Problem02_TwoStacksImplementQueue { public static class myQueue{ Stack<Inte
仇诺伊
2018/09/12
4150
由两个栈组成的队列
栈的特点是先进后出,队列的特点是先进先出,使用两个栈正好能把顺序反过来实现类似队列的操作。
HelloVass
2018/09/12
4050
2022-02-04:组合总和 Ⅳ。 给你一个由 不同 整数组成的数
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。
福大大架构师每日一题
2022/02/04
3860
Android bionic 和 其中的libc由什么组成
The C library. Stuff like fopen(3) and kill(2).
望天
2020/01/14
1.8K0
由 JavaScript 的 with 引发的探索
1. 背景 某天吃饭的时候突然想到,都说 with 会有问题,那么是什么问题,是怎样导致的呢?知其然不知其所以然,在好奇心的驱使下,从 with 出发,一路追溯到 VO、AO。那么先来复习一下 with 是干嘛的吧。 2. with js 的 with 是为对象访问提供命名空间式的访问方式,with 创建一个对象的命名空间,在这个命名空间内你可以直接访问对象的属性,而不需要通过对象来访问: const o = { a: 1, b: 2 }; with (o) { console.log(a); /
用户1097444
2022/06/29
3170
由 JavaScript 的 with 引发的探索
由两个栈组成的队列(C++)
编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。
可爱见见
2019/09/09
4650
javascript 数组求和_javascript数组的定义
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
2.1K0
成功由什么组成?应该怎么做?
能力:包括智力、体力等先天条件,这种能力有个体差异,但差异不会特别大,我们虽然比不上梅西的天赋,但努力下来变成孙兴慜还是有机会的,所以用0~100表示。
春哥大魔王
2023/03/22
4590
成功由什么组成?应该怎么做?
2021-09-30:加一。给定一个由 整数 组成的 非空 数组所表
2021-09-30:加一。给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。力扣66。
福大大架构师每日一题
2021/09/30
4940
Docker由哪些要素组成?常见的容器化技术推荐
传统的虚拟机技术通过在物理硬件上运行虚拟化层(Hypervisor),将物理资源(如处理器、内存、存储等)虚拟化为多个独立的虚拟机。每个虚拟机都有自己的操作系统和应用程序,它们在各自的虚拟环境中运行,并与物理硬件和其他虚拟机隔离开来。
凡泰极客
2023/06/02
3260
Linux内核由哪些组成,这些你了解不
Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。
嵌入式Linux内核
2022/10/26
1.5K0
Linux内核由哪些组成,这些你了解不
JavaScript中的过滤器(filter)
filter()方法会创建一个新数组,原数组的每个元素传入回调函数中,回调函数中有return返回值,若返回值为true,这个元素保存到新数组中;若返回值为false,则该元素不保存到新数组中;原数组不发生改变。
刘亦枫
2020/03/19
3.4K0
JavaScript数据结构01 - 数组
PS:原始值是指固定而简单的值,存放在栈中的简单数据段,它们的值直接存储在变量访问的位置。
leocoder
2018/10/31
1.2K0
JavaScript—数组
​ var 数组名 = new Array(); //创建空数组
Cikian.
2022/09/22
6440
JavaScript数组
数组是一种特殊类型的对象。在 JavaScript 中对数组使用 typeof 运算符会返回 “object”。
hotarugali
2022/03/01
1.2K0
JavaScript——数组
数组(Array)是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。
岳泽以
2022/10/26
6560
JavaScript——数组
点击加载更多

相似问题

获取由Javascript对象组成的indexOf Javascript数组

20

由数字串组成的Javascript数组

40

发送POST数据由数组iOS组成

20

由因子和实数组成的数据

11

JavaScript中由map函数组成的约简函数

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文