2015-08-18 6 views
0

Это сводит меня с ума, у меня есть строка JSON, который выглядит примерно так:Javascript - JSON строки в массив

[["OX", "139.38"], ["LE", "131.28"], ["SA", "105.45"]] 

Я хочу, чтобы преобразовать это в массив, так что я могу, я могу воспользоваться indexOf :

alert(myArray.indexOf("LE")); 

Я пытался конвертировать мой JSON строку в массив с помощью JSON.parse(myJSON) и jQuery.parseJSON(myJSON) но ни работы.

Как создать массив из строки JSON? Я счастлив настроить петлю, но не уверен, как это сделать.

+0

Есть ли у вас что-нибудь изменить JSON? –

+0

* но ни работа * - не работает ** как **? Что происходит вместо этого? – Siguza

+0

Говорят, что недопустимые символы. Я думаю, что строка JSON не является «истинной» строкой JSON – Lee

ответ

1

Это работает в хромированной консоли:

var s = '[["OX", "139.38"], ["LE", "131.28"], ["SA", "105.45"]]'; 
var a = JSON.parse(s); 

// a = [["OX", "139.38"],["LE", "131.28"],["SA", "105.45"]] 

Если вы хотите, чтобы создать структуру данных для поиска значения с помощью клавиш:

var dict = {}; 
for (var i=0; i<a.length; i++){ 
    dict[a[i][0]] = a[i][1]; 
} 

Теперь dict выглядит следующим образом:

//dict = {OX:"139.38", LE:"131.28", SA:"105.45"} 

и мы можем проиндексировать его с помощью клавиш

dict['LE'] // = "131.28" 
+0

И вы можете сделать 'a [0] .indexOf (« OX ») // => 0' ->« a [0] »ссылается на первый массив в общем массиве. Просто FYI это, по сути, то, что называется многомерным массивом – shanehoban

0

Это будет преобразовать его, как это [[ "" ОХ " "139.38"], [ "LE", "131,28" "]] -> [" ОХ", "LE"]

var newArr = []; 

for(var i = 0; i < myArr.length; i++) { 
    newArr.push(myArr[i][0]); 
} 

Это преобразует его так [["" OX "," 139.38 "], [" LE "," 131.28 ""]] -> ["OX", "139.38", "LE", "131.28" ]

var newArr = []; 

for(var i = 0; i < myArr.length; i++) { 
    var tempArr = myArr[i]; 
    for(var j = 0; j < tempArr.length; j++) { 
     newArr.push(tempArr[j]); 
    } 
} 

Теперь вы можете использовать indexOf.

0

Если вы хотите, чтобы получить индекс в массиве Outter:

var x = '[["OX", "139.38"], ["LE", "131.28"], ["SA", "105.45"]]'; 
var y = JSON.parse(x); 

function getIndexByKey(key,array){ 
    for(var i=0, len = array.length; i<len;i++){ 
    if(array[i][0] === key){ 
     return i; 
    } 
    } 
} 

function getIndexByVal(val,array){ 
    for(var i=0, len = array.length; i<len;i++){ 
    if(array[i][1] === val){ 
     return i; 
    } 
    }  
} 

назвав его:

getIndexByKey('OX', y); //0 
getIndexByKey('LE', y); // 1 
getIndexByKey('SA', y) // 2 

getIndexByVal('139.38', y); //0 
...