```

    [{
      id: 1,
      data: "hoge"
    },{
      id: 3,
      data: "hogehogehoge"
    },{
      id: 4,
      data: "fugafuga"
    }];
    
```

このようなデータがあった場合に、例えば`id: 3`のデータは削除するといったようなことは可能でしょうか。

```

    a = [{
      id: 1,
      data: "hoge"
    },{
      id: 3,
      data: "hogehogehoge"
    },{
      id: 4,
      data: "fugafuga"
    }];
    
    
    a.removeDataById(3)
    
    ↓結果
    a = [{
      id: 1,
      data: "hoge"
    },{
      id: 4,
      data: "fugafuga"
    }];
    
```
CC BY-SA 3.0
2015-04-27T11:55:32.563
9605
2015-04-29T04:17:38.437
9149
question
javascript
javascriptで一致するデータが存在したら削除したい
また[`splice`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)でのソリューションを提案したいと思います。

```

    function removeById(array, id) {
      for (var i = array.length - 1; i >= 0; i--) {
        if (array[i].id === id) {
          array.splice(i, 1);
        }
      }
    }
    
    var array = [{
      id: 1,
      data: "hoge"
    }, {
      id: 3,
      data: "hogehogehoge"
    }, {
      id: 4,
      data: "fugafuga"
    }];
    
    removeById(array, 3);
    
    console.log(array);
```
CC BY-SA 3.0
2015-04-27T11:59:01.330
9606
2015-04-27T13:00:15.377
2015-04-27T13:00:15.377
3371
3371
9605
answer
```

    function removeById(array, id) {
      for (var i = array.length - 1; i >= 0; i--) {
        if (array[i].id == id)
          array.splice(i, 1)
      }
    }
    
```

ループの方向にご注意。
CC BY-SA 3.0
2015-04-27T12:43:49.840
9609
2015-04-27T13:09:28.990
2015-04-27T13:09:28.990
3371
9464
9605
answer
非標準ですが `Array.prototype.filter` を使うという手もあります。  
Firefox, Chrome, Opera, Safari, IE 9以上 で対応している様です。  
`Array.prototype.filter` の polyfill は [Array.prototype.filter() - JavaScript |
MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
に載っています。

```

    var a = [{
      id: 1,
      data: "hoge"
    }, {
      id: 3,
      data: "hogehogehoge"
    }, {
      id: 4,
      data: "fugafuga"
    }];
    
    // filter の引数: 残したい要素で true を返す関数を指定
    var b = a.filter(function(entry){return entry.id!=3;});
    
    // ※a 自体が変更されるのではなく新しい配列 b が生成される事に注意
    document.querySelector('#result').innerHTML = JSON.stringify(b);
```

```

    <div id="result"></div>
```
CC BY-SA 3.0
2015-04-27T23:35:13.697
9621
2015-04-28T01:08:49.010
2015-04-28T01:08:49.010
440
5300
9605
answer
```

    Array.prototype.removeById(id) {
      for (var i = this.length - 1; i >= 0; i--) {
        if (this[i].id == id)
          this.splice(i, 1)
      }
    }
    
```
CC BY-SA 3.0
2015-04-29T04:17:38.437
9658
2015-04-29T04:17:38.437
9533
9605
answer