当前位置: 首页 > 面试题库 >

过滤和删除数组中的过滤元素

干照
2023-03-14
问题内容

我想删除原始数组(是var a)中的特定元素。我filter()那个数组,并splice()返回新的数组。但这不会影响此代码中的原始数组。我如何轻松地从原始数组中删除那些元素?

var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}]

var b = a.filter(function (e) {
    return e.name === 'tc_001';
});

b.splice(0,1);

console.log(a);
console.log(b);

问题答案:

Array.prototype.filter()方法不仅用于收集元素集,而且还用于收集元素集。如果您想通过评估条件来获得一项,那么您还有其他三种选择。Array.prototype.indexOf()Array.prototype.findIndex()Array.prototype.find()因此只有当你想对多个项目的操作,你应该考虑使用过滤功能。就需要完成的工作而言,没有一个答案是完整的。他们使用过滤器功能隔离一个集合(在本示例中只是一个项目),但是他们没有显示如何摆脱整个集合。好吧,让我们澄清一下。

如果您只想查找和删除数组中的一项,则应像这样完成

var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}];

a.splice(a.findIndex(e => e.name === "tc_001"),1);

console.log(a);

但是,由于您提到的“特定元素”是复数形式,因此您将需要收集一组选定的项目,并对集合中的每个元素逐个进行上述工作。因此,正确的方法将是。

var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}],

    b = a.filter(e => e.name === "tc_001");

b.forEach(f => a.splice(a.findIndex(e => e.name === f.name),1));

console.log(a);

无论您选择的列表中有多少个元素,这都可以完成您的工作。但是我相信,尽管这看起来合乎逻辑,但确实做了大量的工作。首先过滤,然后对每个过滤的元素进行索引搜索。尽管我知道findIndex太快了,但我希望这一结果会明显变慢,特别是对于大型数组。让我们找到一个o(n)解决方案。干得好

    var a = [{name:'tc_001'}, {name:'tc_002'}, {name:'tc_003'}];

    a = a.reduce((p,c) => (c.name !== "tc_001" && p.push(c),p),[]);

console.log(a);

所以一定是这样。



 类似资料:
  • 本文向大家介绍jQuery remove()过滤被删除的元素(推荐),包括了jQuery remove()过滤被删除的元素(推荐)的使用技巧和注意事项,需要的朋友参考一下 jQuery remove() 方法也可接受一个参数,允许您对被删元素进行过滤。 该参数可以是任何 jquery 选择器的语法。 下面的例子删除 class="italic" 的所有 <p> 元素: 以上所述是小编给大家介绍的j

  • 我有一个布尔数组[true,false,false,true,true],我想用它拆分一个2d数组。我试着做的是 我的一个想法是 输出将是 我不明白这为什么不能正确排序。编辑 这两个数组之间的关系是,如果test[0]==true,则arr[0][0]和arr[0][1]的该部分将放入新传递的数组中,将跳过false<编辑2 更改从3传递到2,在执行此操作时输入错误。

  • 我所拥有的 预期产出 实际产量 这只是一个例子。在我的真实代码中,我正在对我的全局状态(useContext, useReduer)执行删除操作。 是一个ID数组。

  • 问题内容: 因此,单击该按钮后,我可以通过该事件获得该按钮。但是,当我做一个过滤器时,它不会删除所说的按钮。 所以我在构造函数()中有我的数组: 然后我有功能: 但是,其中仍然包含两个元素。 我想过另一种删除它的方法,那就是使用“键”,但是我似乎找不到任何有关获得键值的东西。 问题答案: 首先,您需要绑定到回调函数的范围。如果要访问用于从合成事件呈现按钮的react对象实例,则可以使用privat

  • 问题内容: 我想要一个numpy 2D ndarray的子​​数组(在最小和最大之间) 最小值和最大值是浮点数,以便与数组xy_dat的第一个值进行比较 xy_dat是2D numpy数组: x_displayed已正确过滤,但我丢失了第二个值(现在是一维数组): 如何在第一个值上过滤并保留另一个值? 问题答案: 您应该仅在 第一 列上执行条件: 我们在这里构造一个视图,其中仅考虑带有的第一列。现

  • 问题内容: 我有一点阵。我想根据某些位是ON还是OFF进行过滤。查看Elasticsearch 2.3文档,我没有看到有关位数组的任何信息。 但似乎我可以使用布尔数组或二进制字段。 示例:假设我有2个文档,每个文档都有一个位数组字段。Doc1在该字段中具有011100,而Doc2具有00001。我想按011000进行过滤,在这种情况下,它仅给出Doc1。 任何想法如何在Elasticsearch中