1

I have a like that is like

[
   {Key: 'FName', Value: 'John'},
   {Key: 'LName', Value: 'Doe'},
   {Key: 'Age', Value: '30'},
   {Key: 'Person', Value: 'true'}
]

How is it possible to check if Person exists as a Key?

Pa3k.m
  • 994
  • 2
  • 7
  • 22
  • Look into [.some](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/some) – skara9 Jul 12 '22 at 22:15

3 Answers3

2

Solution 1

You can use <Array>.some

I also made the function take the key you are searching in and the value that you are seeking

const arr = [
   {Key: 'FName', Value: 'John'},
   {Key: 'LName', Value: 'Doe'},
   {Key: 'Age', Value: '30'},
   {Key: 'Person', Value: 'true'}
];




function isValueInsideField(arr, fieldName, value){
  return arr.some(e => e[fieldName] === value);
}

console.log(isValueInsideField(arr, 'Key', 'Person'))
console.log(isValueInsideField(arr, 'Key', '123'))

Solution 2

if you want to retrieve another value from the array

const arr = [
   {Key: 'FName', Value: 'John'},
   {Key: 'LName', Value: 'Doe', someKey:false},
   {Key: 'Age', Value: '30'},
   {Key: 'Person', Value: 'true'}
];




function retriveValueIfKeyExists(arr, keyFieldName, value, valueFieldName){
  // nullish concealing operator to return value even if it is falsy
  // you can change it with || operator  but this might lead to un wanted results
  // if the value is 0 or the boolean value false
  return arr.filter(e => e[keyFieldName] === value)[0]?.[valueFieldName] ?? null;
}

console.log(retriveValueIfKeyExists(arr, 'Key', 'Person', 'Value'))
console.log(retriveValueIfKeyExists(arr, 'Key', 'LName', 'someKey'))

console.log(retriveValueIfKeyExists(arr, 'Key', '123'))
Ahmed Gaafer
  • 1,603
  • 9
  • 26
2

Here is one way:

const vals = [
   {Key: 'FName', Value: 'John'},
   {Key: 'LName', Value: 'Doe'},
   {Key: 'Age', Value: '30'},
   {Key: 'Person', Value: 'true'}
   ];

const personExists = () => vals.filter(x => x.Key === 'Person').length > 0;
console.log(personExists());
andrunix
  • 1,704
  • 1
  • 14
  • 23
1

There can be multiple ways to do that: Third one will return the value as well

const list = [
    {Key: 'FName', Value: 'John'},
    {Key: 'LName', Value: 'Doe'},
    {Key: 'Age', Value: '30'},
    {Key: 'Person', Value: 'true'}
];

function checkKeyClassical(key, list) {
    for (let i = 0; i < list.length; i++) {
        if (list[i].Key === key) {
            return true;
        }
    }
    return false;
}

function checkKeyOnlyExistence(key, list) {
    return list.some(item => item.Key === key);
}

function checkKeyWithValue(key, list) {
    let result = list.find(item => item.Key === key);
    return result ? result.Value : false;
}

console.log(checkKeyClassical('FName', list)); // true
console.log(checkKeyOnlyExistence('FName', list)); // true
console.log(checkKeyWithValue('FName', list)); // John

console.log(checkKeyClassical('NOT_EXISTS', list)); // false
console.log(checkKeyOnlyExistence('NOT_EXISTS', list)); // false
console.log(checkKeyWithValue('NOT_EXISTS', list)); // false
boolfalse
  • 1,892
  • 2
  • 13
  • 14