0

this is my file.

var tabledata = {
0: {Name: "Server1", PRPName: "NO_PRP", OperatingSystem: "Linux", SLA: "SILVER", Environment: "Accept"}
1: {Name: "Server2", PRPName: "services", OperatingSystem: "Linux", SLA: "SILVER", Environment:"Accept"}
2: {Name: "Server3", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"}
3: {Name: "Server4", PRPName: "services", OperatingSystem: "Linux", SLA: "GOLD", Environment: "Accept"}
4: {Name: "Server5", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"}
5: {Name: "Server6", PRPName: "sql", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"}
6: {Name: "Server7", PRPName: "services", OperatingSystem: "Linux", SLA: "GOLD", Environment: "Production"}
7: {Name: "Server8", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Production"}
8: {Name: "Server9", PRPName: "sql", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Production"}
9: {Name: "Server10", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Production"}
10: {Name: "Server11", PRPName: "sql", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"}
};

i want to search for the PRPName "sql" and make a new array with only these entry in it.

the code i got so far is:

selectedValue = "sql"
    for (var i = 0; i < tabledata.length; i++) {
                results = [];
                var findItem = Object.values(tabledata).find(function(data){return data.PRPName.toLowerCase() === selectedValue.toLowerCase()});

              }
              console.log(findItem)
str
  • 42,689
  • 17
  • 109
  • 127
kleineties
  • 45
  • 6
  • Possible duplicate of [How to filter object array based on attributes?](https://stackoverflow.com/questions/2722159/how-to-filter-object-array-based-on-attributes) – cнŝdk Sep 25 '19 at 11:10

3 Answers3

2

the way to do it is first to create an array from your object, then call filter on it

var tabledata = {
0: {Name: "Server1", PRPName: "NO_PRP", OperatingSystem: "Linux", SLA: "SILVER", Environment: "Accept"},
1: {Name: "Server2", PRPName: "services", OperatingSystem: "Linux", SLA: "SILVER", Environment:"Accept"},
2: {Name: "Server3", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"},
3: {Name: "Server4", PRPName: "services", OperatingSystem: "Linux", SLA: "GOLD", Environment: "Accept"},
4: {Name: "Server5", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"},
5: {Name: "Server6", PRPName: "sql", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"},
6: {Name: "Server7", PRPName: "services", OperatingSystem: "Linux", SLA: "GOLD", Environment: "Production"},
7: {Name: "Server8", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Production"},
8: {Name: "Server9", PRPName: "sql", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Production"},
9: {Name: "Server10", PRPName: "NO_PRP", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Production"},
10: {Name: "Server11", PRPName: "sql", OperatingSystem: "Windows", SLA: "GOLD", Environment: "Accept"}
};

let array = Object.values(tabledata)
let resultArray = array.filter(el => el.PRPName === "sql")
console.log(resultArray)

I used Object.values to get the array from your object because it is the one doing the intended transformation in this case

jonatjano
  • 3,576
  • 1
  • 15
  • 20
1
var data;
for(i=0;i<11;i++){
    if(tabledata[i].PRPName=='sql')
    data=tabledata[i];
}
console.log(data);
  • This does not answer the question which was about keeping only the values where the PRPName is "sql". Your answer creates a new array with only the PRPNames inside. Also, maybe you should consider explaining a bit your code. – ghilesZ Sep 25 '19 at 11:26
0
  var tabledata = [{"Name":"Server1","PRPName":"NO_PRP","OperatingSystem":"Linux","SLA":"SILVER","Environment":"Accept"},{"Name":"Server2","PRPName":"services","OperatingSystem":"Linux","SLA":"SILVER","Environment":"Accept"},{"Name":"Server3","PRPName":"NO_PRP","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Accept"},{"Name":"Server4","PRPName":"services","OperatingSystem":"Linux","SLA":"GOLD","Environment":"Accept"},{"Name":"Server5","PRPName":"NO_PRP","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Accept"},{"Name":"Server6","PRPName":"sql","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Accept"},{"Name":"Server7","PRPName":"services","OperatingSystem":"Linux","SLA":"GOLD","Environment":"Production"},{"Name":"Server8","PRPName":"NO_PRP","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Production"},{"Name":"Server9","PRPName":"sql","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Production"},{"Name":"Server10","PRPName":"NO_PRP","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Production"},{"Name":"Server11","PRPName":"sql","OperatingSystem":"Windows","SLA":"GOLD","Environment":"Accept"}];

  function searchData(json, fields, searchValue){
     return json.filter(d => d[fields] == searchValue);
  }

  // Use to Search function
  var searchResult = searchData(tabledata,"PRPName", "sql");
  console.log(searchResult);