当前位置: 首页 > 知识库问答 >
问题:

筛选并创建新数组[重复]

孔茂
2023-03-14

我有一个对象,如下所示:

var obj = [
            {id: 1, name: 'AD', key: 10}, 
            {id: 2, name: 'AD', key: 20},
            {id: 3, name: 'BD', key: 30},
            {id: 4, name: 'CD', key: 40}
         ];

我想过滤并创建一个满足任何条件的新数组。例如:过滤器的名称为“AD”,并创建一个新的密钥数组,如下所示:

[10, 20]

尝试地图

obj.map(ele => {
  return ele.name === 'AD' ? ele.key : null;
}); //it adds even nulls in the result array as [10, 20, null, null]

尝试过了。过滤器:

obj.filter(ele => {
   return ele.name === 'AD' ? ele.key : null;
});

Result: [{id: 1, name: "AD", key: 10}, {id: 2, name: "AD", key: 20}] //gives array of objects, not what I'm expecting.

提前谢谢

共有3个答案

袁鸿雪
2023-03-14

你可以使用减少()

var obj = [{id: 1, name: 'AD', key: 10},{id: 2, name: 'AD', key: 20},{id: 3, name: 'BD', key: 30},{id: 4, name: 'CD', key: 40}];

var result = obj.reduce((acc, cur) => {
  if (cur.name == "AD") acc.push(cur.key)
  return acc;
}, []);

console.log(result);
沈龙光
2023-03-14

首先,obj是代码中的一个数组。现在,解决方案很简单,先过滤,然后映射如下:

obj.filter(item => item.name === 'AD').map(item => item.key);
黄向明
2023-03-14

首先过滤数组,然后映射以获取值:

obj.filter(e => e.name === 'AD').map(e => e.key)

另一个选项是flatmap(在此处检查浏览器兼容性)

obj.flatMap(e => e.name === 'AD' ? [e.key] : [])
 类似资料:
  • 问题 你想要根据布尔条件来筛选数组。 解决方案 使用 Array.filter (ECMAScript 5): array = [1..10] array.filter (x) -> x > 5 # => [6,7,8,9,10] 在 EC5 之前的实现中,可以通过添加一个筛选函数扩展 Array 的原型,该函数接受一个回调并对自身进行过滤,将回调函数返回 true 的元素收集起来。 # 扩展 A

  • 我有一个现有的数组,如下所示 然后我想创建一个新的数组,如下所示 我已经通过方法尝试过了 但是它没有给出一个正确的数组,请帮助我解决这个问题

  • 我是swift和Xcode的新手,我一直在开发一个应用程序,该应用程序使用plist字典作为NSarray创建tableview(员工的名字空间为姓氏)。我正在尝试添加搜索功能。 这是我的代码: var employeeSearch=数组 //上述功能无错误 //我在下面的函数中遇到了一些错误 感谢任何帮助。谢谢。 //3月1日-这终于起作用了,但只有相等的条件才不会出错。我的期望是有包含特性。。

  • 每次在“调用解析时间”列中有一个新的月份,我都希望用那个月份和年份创建一个新的csv文件。对于包含那个月份和年份的所有行,都要过滤到那个新的csv中。 这样地: 所有数据。csv 新文件于2015年5月发布。从所有数据创建csv。仅限2015年5月20日的csv数据 到目前为止,我有这个,但我必须为每年和每月手动创建一些东西: 编辑---------------------------------

  • 我很好奇如何比较这些数组,请记住这是一个示例,它不限于 4 个数组,因为这可能或多或少取决于用户选择) 最终目标是根据上述所有数组的比较/验证,获得一个具有真值或假值的新数组,仅当所有 4 个数组在该索引位置都有一个真值时,才应设置一个真值,如果它们是否为假值,例如: 希望我解释得正确。

  • 我正在为一个数组做一个搜索函数。我有一个输入[文本],例如,我把'ban',然后我需要所有以'ban'开头的结果显示出来,例如香蕉,香蕉奶昔,香蕉(油炸),等等。 我该怎么做呢?我试过了,但每次都不准确。我试过的在下面。 我有一个非常接近,但当我键入“ban”时,它出现了“aardbei”。这显然是错误的。在这里,也许我忽略了什么?