简体   繁体   中英

Unexpected token at JSON position

When using JSON.parse to achieve the output expected I am getting error Unexpected token B in JSON at position 1 . What is it I am missing?

 var string1 = "BODEBO,CARNE"; var array1 = string1.split(','); var string2 = "1,2"; var array2 = string2.split(','); var a =[]; var b = []; for(var i=0;i<array1.length;i++){ var c = array1[i]; var d = array2[i]; e = "[" + c +","+d +"]"; e =JSON.parse(e); a.push(e); } console.log(a); 

Ouptput Expected

[[ 'BODEBO', '1'],[ 'CARNE','2' ]];

without json.parse

OUTPUT

 [ '[BODEBO,1]', '[CARNE,2]' ]

I dont want ' ' on each array element

Might as well just make an array if the output expected has arrays.

 var string1 = "BODEBO,CARNE"; var array1 = string1.split(','); var string2 = "1,2"; var array2 = string2.split(','); var a = []; for(var i = 0; i < array1.length; i++){ a.push([array1[i], array2[i]]); } console.log(a); 

But who needs loops when you have map?

 var string1 = "BODEBO,CARNE"; var array1 = string1.split(','); var string2 = "1,2"; var array2 = string2.split(','); console.log(array1.map((s, idx) => [s,array2[idx]])); 

You could simply loop over the first array, and then push a single array onto your output array.

var string1 = "BODEBO,CARNE";
var array1 = string1.split(',');
var string2 = "1,2";
var array2 = string2.split(',');

var a = [];

for(var i=0;i<array1.length;i++){
    a.push([ array1[i], array2[i] ]);
}

// You can now just make use of the 'a' array.
console.log(a);

Giving you the following output: [["BODEBO","1"],["CARNE","2"]]

In order for JSON.parse to work you need to provide valid JSON. The function is currently passing in an array like:

[BODEBO,1]

which is not valid. To make it work you need to wrap each item in quotes, like:

["BODEBO","1"]

 var string1 = "BODEBO,CARNE"; var array1 = string1.split(','); var string2 = "1,2"; var array2 = string2.split(','); var a = []; var b = []; for (var i = 0; i < array1.length; i++) { var c = array1[i]; var d = array2[i]; e = "[\\"" + c + "\\",\\"" + d + "\\"]"; e = JSON.parse(e); a.push(e); } console.log(a); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM