下のような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
} ]
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>
オブジェクト配列に特定の値が含まれているかどうかを確認する簡単な関数を作成します。
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
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;
}
}