bugfix> javascript > 投稿

特定のアイテムインデックス番号を見つける必要があるオブジェクトがあります。以下は私のオブジェクトです:

[
  {
    "type": "Grayscale",
    "mode": "average"
  }, {
    "type": "Sepia"
  }, {
    "type": "Invert",
    "invert": true
  }, {
    "type": "Convolute",
    "opaque": false,
    "matrix": [1, 1, 1, 1, 0.7, -1, -1, -1, -1]
  }, {
    "type": "Convolute",
    "opaque": false,
    "matrix": [0, -1, 0, -1, 5, -1, 0, -1, 0]
  }, {
    "type": "Brownie"
  }, {
    "type": "Brightness",
    "brightness": 0.35
  }
]

たとえば、値が Invert であるアイテムのインデックス番号を見つける必要があります type のプロパティ。したがって、この場合、出力は 2 になります。 。 type の値を検索するだけですキー。

回答 3 件
  • findIndex を使用できます  メソッド、提供された折り返し電話 引数としての関数。

    let arr = [ {"type":"Grayscale","mode":"average"}, {"type":"Sepia"}, {"type":"Invert","invert":true}, {"type":"Convolute","opaque":false,"matrix":[1,1,1,1,0.7,-1,-1,-1,-1]}, {"type":"Convolute","opaque":false,"matrix":[0,-1,0,-1,5,-1,0,-1,0]}, {"type":"Brownie"}, {"type":"Brightness","brightness":0.35} ], key = 'type';
    console.log(arr.findIndex(elem => elem[key] == 'Invert'));
    
    

  • コードの短いスニペットを次に示します。

    var sample = [{"type":"Grayscale","mode":"average"},{"type":"Sepia"},{"type":"Invert","invert":true},{"type":"Convolute","opaque":false,"matrix":[1,1,1,1,0.7,-1,-1,-1,-1]},{"type":"Convolute","opaque":false,"matrix":[0,-1,0,-1,5,-1,0,-1,0]},{"type":"Brownie"},{"type":"Brightness","brightness":0.35}]  
    function findIndex(data, keyfield, value){
      
      return data.indexOf(data.find(function(el,index){
        return el[keyfield] === value;
      }));
    }
    console.log(findIndex(sample, 'type', 'Invert'));
    
    

  • アンダースコアまたはloadash(_)パッケージを使用できます。配列操作の複数の機能をサポートしています。

    const _ = require('lodash')
    let your_array=  [
          {"type":"Grayscale","mode":"average"},
          {"type":"Sepia"},
          {"type":"Invert","invert":true},
          {"type":"Convolute","opaque":false,"matrix":[1,1,1,1,0.7,-1,-1,-1,-1]},
          {"type":"Convolute","opaque":false,"matrix":[0,-1,0,-1,5,-1,0,-1,0]},
          {"type":"Brownie"},
          {"type":"Brightness","brightness":0.35}
        ];
        let objectIndex = _.findIndex(your_array, each_element=> each_element.type == "Invert");
        alert(objectIndex)
    
    

あなたの答え