web-dev-qa-db-ja.com

JavaScriptを使用してJSONオブジェクトに値が含まれているかどうかを確認します

下のようなJSONオブジェクトの特定のキーに特定の値が含まれているかどうかを確認したいと思います。いずれかのオブジェクトのキー「name」の値が「Blofeld」であるかどうかを確認したいとします(これはtrueです)。どうやってやるの?

[ {
  "id" : 19,
  "cost" : 400,
  "name" : "Arkansas",
  "height" : 198,
  "weight" : 35 
}, {
  "id" : 21,
  "cost" : 250,
  "name" : "Blofeld",
  "height" : 216,
  "weight" : 54 
}, {
  "id" : 38,
  "cost" : 450,
  "name" : "Gollum",
  "height" : 147,
  "weight" : 22 
} ]
14
Rawland Hustle

Array.some()関数を使用することもできます:

const arr = [{
  id: 19,
  cost: 400,
  name: "Arkansas",
  height: 198,
  weight: 35 
}, {
  id: 21,
  cost: 250,
  name: "Blofeld",
  height: 216,
  weight: 54 
}, {
  id: 38,
  cost: 450,
  name: "Gollum",
  height: 147,
  weight: 22 
}];

console.log(arr.some(item => item.name === 'Blofeld'));
console.log(arr.some(item => item.name === 'Blofeld2'));

// search for object using lodash
const objToFind1 = {
  id: 21,
  cost: 250,
  name: "Blofeld",
  height: 216,
  weight: 54 
};
const objToFind2 = {
  id: 211,
  cost: 250,
  name: "Blofeld",
  height: 216,
  weight: 54 
};
console.log(arr.some(item => _.isEqual(item, objToFind1)));
console.log(arr.some(item => _.isEqual(item, objToFind2)));
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
28
Andriy

オブジェクト配列に特定の値が含まれているかどうかを確認する簡単な関数を作成します。

var arr=[{
   "name" : "Blofeld",
   "weight" : 54 
},{
   "name" : "",
   "weight" : 22 
}];

function contains(arr, key, val) {
    for (var i = 0; i < arr.length; i++) {
        if(arr[i][key] === val) return true;
    }
    return false;
}

console.log(contains(arr, "name", "Blofeld")); //true
console.log(contains(arr, "weight", 22));//true

console.log(contains(arr, "weight", "22"));//false (or true if you change === to ==)
console.log(contains(arr, "name", "Me")); //false
4
call-me

hasOwnProperty() を使用して、配列内のすべてのオブジェクトを単純にループします。

var json = [...];
var wantedKey = ''; // your key here
var wantedVal = ''; // your value here

for(var i = 0; i < json.length; i++){

   if(json[i].hasOwnProperty(wantedKey) && json[i][wantedKey] === wantedVal) {
     // it happened.
     break;
   }

}
2
wscourge