Remove object from array of objects

前端 未结 9 1445
滥情空心
滥情空心 2021-01-31 15:28

I have an array of objects:

[{\"value\":\"14\",\"label\":\"7\"},{\"value\":\"14\",\"label\":\"7\"},{\"value\":\"18\",\"label\":\"7\"}]

How I ca

相关标签:
9条回答
  • 2021-01-31 15:57

    Solution with Identity

    If you have object identity not just object equality (i.e. you're trying to delete a specific object from the array, not just an object that contains the same data as an existing object) you can do this very simply with splice and indexOf:

    a = {x:1}
    b = {x:2}
    arr = [a,b]
    

    Say you want to remove b:

    arr.splice(
      arr.indexOf(b), 1
    );
    

    Solution with Equality

    The question makes it unclear whether we are dealing with identity or equality. If you have equality (two objects containing the same stuff, which look the same as each other, but are not actually the same object), you'll need a little comparison function, which we can pass to findIndex.

    a = {x: 1};
    b = {x: 2};
    arr = [a, b];
    

    Now we want to remove c, which is equal to, but not the same as a:

    c = {x: 1}
    
    index = arr.findIndex(
      (i) => i.x === c.x
    )
    
    if (index !== -1) {
      arr.splice(
        index, 1
      );
    }    
    

    Note that I'm passing an ES6 style lambda function here as the first parameter to findIndex.

    Unless you have the luxury of only writing for evergreen browsers, you'll probably want to be using a transpiler like Babel to use this solution.

    Solution with Immutability

    If you care about immutability, and you want to return a new array, you can do it with filter:

    a = {x: 1};
    b = {x: 2};
    arr = [a, b];
    

    Let's keep everything that isn't a:

    newArr = arr.filter((x) => x != a)
    
    0 讨论(0)
  • 2021-01-31 15:57
    function removeDuplicateObject (arr) {
      let temp = arr.map((item) => {
        return JSON.stringify(item);
      });
      temp = Array.from(new Set(temp));
      return temp.map((item) => {
        return JSON.parse(item);
      });
    }
    

    Then removeDuplicateObject(your array)

    0 讨论(0)
  • 2021-01-31 15:59

    If you dont want to mutate your array simply use filter method , Array.prototype.filter()

    array.filter((i)=> i != "b");

    0 讨论(0)
提交回复
热议问题