【问题标题】:How can I remove an item from an array using either javascript or lodash如何使用 javascript 或 lodash 从数组中删除项目
【发布时间】:2015-05-18 20:48:37
【问题描述】:

我的对象在下面。我在 Angular 中使用它,并在其中注入了 lodash。我想使用choice2 删除第二个项目作为我要传递的匹配项。

    $scope.choices = [{ id: 'choice1' }, { id: 'choice2' }, { id: 'choice3' 

【问题讨论】:

  • 只要循环,一旦你找到匹配的拼接并返回。
  • 如果您将相同的对象引用传递给从数组中删除项目的函数,那么只需与 indexOf 拼接...
  • SO 社区对这个问题的反对票令人不安。任何时候你想学习新的东西,或者一个模块/框架如何适应另一个或任何东西,你需要以最简单的形式看到它,然后你可以更快地学会它。涌向这些问题的人都是很了解它的人,所以它看起来太简单了,或者这个问题很愚蠢,我讨厌那个 +rep 的问题。谢谢提问

标签: javascript angularjs lodash


【解决方案1】:

可以使用lodash的remove方法。

$scope.choices = [{ id: 'choice1' }, { id: 'choice2' }, { id: 'choice3' }];
_.remove($scope.choices, function(n) {
    return n.id == 'choice2';
});

【讨论】:

    【解决方案2】:
    _.remove($scope.choices, function(n) {
      return n.id == 'choice2';
    });
    

    【讨论】:

      【解决方案3】:

      在 vanilla-js 中,如果你不介意创建新对象,可以使用filter

      $scope.choices = $scope.choices.filter(function(obj) {
          return obj.id !== 'choice2';
      });
      

      【讨论】:

      • 如果您想在单场比赛后返回,这并不理想...过滤器仍会运行...
      • 是的,我假设可能有多个匹配项。否则,findIndex 会更好。
      • 查看我认为不同的数据。您可以只使用some 并将其拼接起来......需要为老年人填充findindex或一些或任何东西!
      • 在这种情况下使用 some() 的问题是,它需要一个带有闭包的外部回调额外 var 来获取意义信息(索引、val 等),这意味着可能的函数不能重复使用。那么过滤器也存在不删除任何内容而是复制一些内容的问题。
      【解决方案4】:
      _.filter($scope.choices, function(choices) {
         if(choices.id !== 'choice2') {
            // do something
         }
      });
      

      如果您想使用其他选择,这是一种编程方式。您不仅要直接消除一个选项,然后就这样保留它,在我的情况下,您正在消除该选项,并且您告诉应用程序在忽略它之后,然后去做某事。如果您只想删除该选项,请使用xavier hans 回答

      【讨论】:

        【解决方案5】:

        _.remove 方法通过删除第二个参数中传递的任何匹配项来扩充给定数组。

        在这种情况下,传递一个具有id 属性和你的变量id 值的对象。当迭代对象数组时,lodash 将删除任何匹配该属性/值对的对象。

        请看下面的例子:

        $scope.choices = [{ id: 'choice1' }, { id: 'choice2' }, { id: 'choice3' }]
        var id = 'choice2';
        _.remove($scope.choices, {id: id});
        console.log(choices)
        

        【讨论】:

        • 请描述您的解决方案,而不仅仅是发布代码。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 2015-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多