Mam json tak:Zdobądź indeks klucza w json
json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }
Teraz chcę wiedzieć indeks klucza, powiedzieć „Klawisz2” w json - czyli 1. Czy istnieje droga?
Mam json tak:Zdobądź indeks klucza w json
json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }
Teraz chcę wiedzieć indeks klucza, powiedzieć „Klawisz2” w json - czyli 1. Czy istnieje droga?
będzie za późno, ale to może być proste i użyteczne
var json = '{ "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }';
var keytoFind = "key2";
var index = Object.keys(json).indexOf(keytoFind);
alert(index);
To, co masz, to ciąg reprezentujący obiekt javascript serializowany przez JSON. Musisz go przekształcić z powrotem w obiekt javascript, zanim będzie można przeglądać jego właściwości. W przeciwnym razie będziesz pętli przez każdy indywidualny znak tego ciągu.
var resultJSON = '{ "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }';
var result = $.parseJSON(resultJSON);
$.each(result, function(k, v) {
//display the key and value pair
alert(k + ' is ' + v);
});
lub po prostu:
arr.forEach(function (val, index, theArray) {
//do stuff
});
Nigdy nie powiedział, że jego JSON był sznurkiem? Wręcz przeciwnie? – h2ooooooo
W zasadzie, to źle szukać indeksu klucza. Klucze mapy hash są nieuporządkowane, nigdy nie powinieneś oczekiwać określonej kolejności.
Poszukiwane są indeksy numeryczne w sposobie działania klasycznych tablic, jednak nie ma czegoś takiego w obiektach json/tablicach asocjacyjnych.
"key1", "key2" same są indeksami i nie ma z nimi powiązanego indeksu numerycznego. Jeśli chcesz mieć taką funkcjonalność, musisz je sam przyporządkować.
Spróbuj
var json = '{ "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" }';
json = $.parseJSON(json);
var i = 0, req_index = "";
$.each(json, function(index, value){
if(index == 'key2'){
req_index = i;
}
i++;
});
alert(req_index);
To będzie wymagało biblioteki jQuery. –
Nie trzeba indeks liczbowy dla klucza obiektu, ale wiele inni ci to powiedział.
Oto rzeczywista odpowiedź:
var json = { "key1" : "watevr1", "key2" : "watevr2", "key3" : "watevr3" };
console.log(getObjectKeyIndex(json, 'key2'));
// Returns int(1) (or null if the key doesn't exist)
function getObjectKeyIndex(obj, keyToFind) {
var i = 0, key;
for (key in obj) {
if (key == keyToFind) {
return i;
}
i++;
}
return null;
}
Choć prawdopodobnie jesteś po prostu szukają tej samej pętli, który używałem w tej funkcji, więc można przejść przez obiekt:
for (var key in json) {
console.log(key + ' is ' + json[key]);
}
które wyjście będzie
key1 is watevr1
key2 is watevr2
key3 is watevr3
Cóż, nie szukałem pętli do iterowania nad jsonem. Właściwie w części mojego kodu tworzę tablicę przez iterowanie nad jsonem. W innym fragmencie kodu mam klucz z json i mam tablicę i potrzebuję znaleźć element tablicy, który odnosi się do tego klucza. Wiem, że jestem w dziwnej sytuacji i możesz być zdezorientowany, ale dostałem to, czego szukałem. Więc dziękuję! – shreyj
Co jeśli chcę znaleźć KEY, który zawiera watevr2. ?? –
@TusharShukla Wymaga iteracji, aby znaleźć klucz według jego wartości. Proszę odnieść się do tego [link] (http://stackoverflow.com/questions/9907419/javascript-object-get-key-by-value) – Gowsikan
Czy jest stabilny czy nie? –