I have array of objects, in which the keys matches,
then return the array of object using javascript
for example,
Passing param zapp is found in arr, return those objects in array using
javascript
var arr =[
{id:1, keys: "zapp"},
{id:2, keys: "zapp, zoin"},
{id:3, keys: "dell"}
];
tried
function checkKeys (arr, keytocheck) {
let result=[]
if(arr.length > 0){
for(let elem of arr) {
const splitkeys = elem.keys(',');
if(elem.keys.indexOf(',') > -1) {
// comma have
if(splitKeys.includes(keytocheck)){
result.push(elem);
}
}
else {
// no comma
if(elem.keys === keytocheck) {
result.push(elem);
}
}
}
}
return result
};
console.log(checkKeys(arr, "zapp"));
Expected Output
[
{id:1, keys: "zapp"},
{id:2, keys: "zapp, zoin"}
]
CodePudding user response:
You are missing split in:
const splitkeys = elem.keys(','); // HERE keys is a string not a function
You have to use split here as:
const splitkeys = elem.keys.split(',');
var arr = [
{ id: 1, keys: 'zapp' },
{ id: 2, keys: 'zapp, zoin' },
{ id: 3, keys: 'dell' },
];
function checkKeys(arr, keytocheck) {
let result = [];
if (arr.length > 0) {
for (let elem of arr) {
const splitkeys = elem.keys.split(',');
if (elem.keys.indexOf(',') > -1) {
// comma have
if (splitkeys.includes(keytocheck)) {
result.push(elem);
}
} else {
// no comma
if (elem.keys === keytocheck) {
result.push(elem);
}
}
}
}
return result;
}
console.log(checkKeys(arr, 'zapp'));
ALTERNATE SOLUTION 1
You can use filter and includes here as:
var arr = [
{ id: 1, keys: 'zapp' },
{ id: 2, keys: 'zapp, zoin' },
{ id: 3, keys: 'dell' },
];
function checkKeys(arr, keytocheck) {
return arr.filter((o) => o.keys.includes(keytocheck));
}
console.log(checkKeys(arr, 'zapp'));
ALTERNATE SOLUTION 2
You can use regex also here as:
var arr = [
{ id: 1, keys: 'zapp' },
{ id: 2, keys: 'zapp, zoin' },
{ id: 3, keys: 'dell' },
];
function checkKeys(arr, keytocheck) {
const regex = new RegExp(keytocheck);
return arr.filter((o) => o.keys.match(regex));
}
console.log(checkKeys(arr, 'zapp'));
CodePudding user response:
You can use filter method
const array = [
{ id: 1, keys: 'zapp' },
{ id: 2, keys: 'zapp, zoin' },
{ id: 3, keys: 'dell' },
];
function filterByKeyValue(arr, key){
return arr.filter((el) => el.keys.toLowerCase().includes(key.toLowerCase()));
}
console.log(filterByKeyValue(array, 'zapp'));
