cautare valoare in array 2-dimensional js

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
andras
Mesaje: 430

cautare valoare in array 2-dimensional js

Salut,
Am salvat (din fisier apelat cu ajax) un array intr-un element <input type = "hidden" id="idmutari">. Am folosit expresia (simplificat):

Cod: Selectaţi tot

<script>
	success : function(msg) {
	var mutari = JSON.stringify( msg );	
		$('#idmutari').val(mutari);   
                alert(mutari); // afiseaza array de forma:
// "array (\n 0 => \n array (\n 'mutari_id' => 1,\n 'diagrid' =>2,\n 'mutarefen' => 'R3k3/8/4K3/8/8/8/8/8 b - - 1 1',\n 'mutarepgn' => '1. Ra8#',\n ),\n)"
	}
</script>
Cum pun intr-o functie Javascript o conditie sa verifice daca o anumita valoare exista in array (ex. 'R3k3/8/4K3/8/8/8/8/8 b - - 1 1') si daca exista sa semnaleze sau sa dea return false;? In array JS pot fi mai multe inregistrari, pentru exemplificare am pus doar una.
Trebuie sa gestionez array-ul JS la fel ca un array asociativ cu indici numerici. Se poate acest lucru?
Multumesc.

MarPlo Mesaje: 4343
Salut
Vezi daca iti e de folos functia din acest exemplu. Returneaza un obiect {i: k}, unde "i" este indexul din array-ul parinte, iar "k" este cheia de la valoarea cautata; sau False daca valoarea nu e gasita.

Cod: Selectaţi tot

//find $val in a 2-dimensional array
//Returns object with index in 1st array and key of val in the 2nd array, or false
function findValArr(val, arr) {
  var re = false;
  for(var i=0; i<arr.length; i++) {
    for(var k in arr[i]) if(arr[i][k] == val){
      if(re == false) re ={};
      re["'"+ i +"'"]= k;
    }
  }
  return re;
}

//array to test
var arr = [
  {mutari_id:1, diagrid:2, mutarefen:'R3k3/8/4K3/8/8/8/8/8 b - - 1 1', mutarepgn:'1. Ra8#'},
  {mutari_id:3, diagrid:4, mutarefen:'abc..', mutarepgn:'xyz..'}
]

var get_elm = findValArr('R3k3/8/4K3/8/8/8/8/8 b - - 1 1', arr);
console.log(get_elm);  // {'0': "mutarefen"}

var get_elm2 = findValArr('xdfghj', arr);
console.log(get_elm2);  // false

Subiecte similare