0

I have object like this:

[
  {
    "id": 1,
    "name": "App 1",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app1",
    "kat": "tkj"
  },
  {
    "id": 2,
    "name": "App 2",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app2",
    "kat": "tkj"
  },
  {
    "id": 3,
    "name": "App 3",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app3",
    "kat": "tei"
  },
  {
    "id": 4,
    "name": "App 4",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app4",
    "kat": "tei"
  },
  {
    "id": 5,
    "name": "App 5",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app5",
    "kat": "tei"
  }
]

How i get/select all object with same keys (kat) in javascript?

example i want to get all object with kat=tkj will return:

[{
    "id": 1,
    "name": "App 1",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app1",
    "kat": "tkj"
  },
  {
    "id": 2,
    "name": "App 2",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app2",
    "kat": "tkj"
  }]

Thanks for your help ^_^

Jaqen H'ghar
  • 16,186
  • 8
  • 49
  • 52
  • 1
    Possible duplicate of [Javascript: How to filter object array based on attributes?](http://stackoverflow.com/questions/2722159/javascript-how-to-filter-object-array-based-on-attributes) – tocqueville Apr 02 '17 at 17:15

5 Answers5

0

You can do this using filter function, like this:

var yourOriginalArray = [...];

var result = yourOriginalArray.filter(function(item) {
    return item.kat === "tkj";
})

@edit

For more explanation:

Array has a built in function called filter. As a parameter you pass a function that will be called for every item (object) in your array. When the function returns true, the item is added to the result array, if it returns false, then the item is skipped.

Humberd
  • 2,794
  • 3
  • 20
  • 37
0

use the filter method on your array in a more generic way

var yourArray; //the array in your exemple

key = 'kat'; // the key you want to filter the array accordingly
value = 'tkj'; // the matching value for that key
var filteredArray = yourArray.filter(function(item){
 return item[key] === value
}
Fanyo SILIADIN
  • 802
  • 5
  • 11
0

Here is working example, I prepared two working functions, one in pure javascript, second in ES6.

// PureJS
function findObjectsByKeyValue(object, key, value) {
  var result = [];

  for (i = 0; i < object.length; i++) {
    var element = object[i];
    
    if (element[key] === value) {
      result.push(element);
    }
  }
  
  return result;
}

// ES6
function findObjectsByKeyValueES6(object, key, value) {
  return object.filter(element => { 
    return element[key] === value 
  });
}

var obj = [
  {
    "id": 1,
    "name": "App 1",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app1",
    "kat": "tkj"
  },
  {
    "id": 2,
    "name": "App 2",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app2",
    "kat": "tkj"
  },
  {
    "id": 3,
    "name": "App 3",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app3",
    "kat": "tei"
  },
  {
    "id": 4,
    "name": "App 4",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app4",
    "kat": "tei"
  },
  {
    "id": 5,
    "name": "App 5",
    "desc": "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit. Nulla quis lorem ut libero malesuada feugiat. Donec sollicitudin molestie malesuada. Nulla quis lorem ut libero malesuada feugiat.",
    "nick": "app5",
    "kat": "tei"
  }
];

// Pure JS
var result = findObjectsByKeyValue(obj, 'kat', 'tkj');
// ES6 filter
//var result = findObjectsByKeyValueES6(obj, 'kat', 'tkj');
console.log(result);
loelsonk
  • 3,570
  • 2
  • 16
  • 23
0

Try alert($('[id=x1]').length);

here x1 is id.

and loop using $("[x1]").each(function(){}

bhandari
  • 11
  • 2
-1

using .filter() is smarter
You should loop through your object

// Your object
let obj = {...}


function getByPropertieValue( obj, prop, value )
{
    // objects with the good prop
    let matchs = []
    obj.forEach( subObj => { if (subObj[prop] == value) matchs.push(subObj) } )

    return matchs
}

console.log( getByPropertieValue(obj, 'kat', 'tkj') )
Alexandre Daubricourt
  • 3,323
  • 1
  • 34
  • 33