2016-11-30 2 views
2

Ich habe Karte in Java wie folgt aus:Konvertieren Map <String, String> in Array in jquery

"{one=Print, two=Email, three=Download, four=Send to Cloud}"; 

Ich brauche das Array über String-Array in jquery und Schleife zu konvertieren und die jeweiligen Schlüssel und Wert holen

+0

Was ist das Problem? – silentprogrammer

+0

zeigen, was Sie bisher versucht haben? –

+0

Mögliches Duplikat von [Konvertieren der Hash-Map in Array] (http://stackoverflow.com/questions/10336794/converting-hash-map-to-array) – Coder

Antwort

0

Verwenden Sie die Methoden String#slice, String#trim, Array#forEach und String#split.

var str = "{one=Print, two=Email, three=Download, four=Send to Cloud}"; 
 

 
str 
 
// remove the space at start and end 
 
    .trim() 
 
    // get string without `{` and `}` 
 
    .slice(1, -1) 
 
    // split by `,` 
 
    .split(',') 
 
    // iterate over the array 
 
    .forEach(function(v) { 
 
    // split by `=` 
 
    var val = v.trim().split('='); 
 
    console.log('key : ' + val[0] + ", value : " + val[1]) 
 
    })


UPDATE: Wenn Sie dann Array#reduce Methode verwenden, um ein Objekt erzeugen möchten.

var str = "{one=Print, two=Email, three=Download, four=Send to Cloud}"; 
 

 
var res = str 
 
    .trim() 
 
    .slice(1, -1) 
 
    .split(',') 
 
    .reduce(function(obj, v) { 
 
    var val = v.trim().split('='); 
 
    // define object property 
 
    obj[val[0]] = val[1]; 
 
    // return object reference 
 
    return obj; 
 
    // set initial parameter as empty object 
 
    }, {}) 
 

 
console.log(res)

+0

.reduce() wird in ie8 nicht unterstützt, gibt es dafür eine Alternative – user3044552

+0

@ user3044552: Überprüfen Sie Polyfill: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Polyfill –

0

Hier ist ein einfaches Hack:

let arr = jsons.replace('{','').replace('}','').split(',') 
arr.map((each)=>{let newVal = each.split('='); return {key: newVal[0], value: newVal[1]}}) 
0

Try this:

function convertString(string) { 
    return string.split(', ').map(function(a) { 
    var kvArr = a.split('='); 
    return {key: kvArr[0], value: kvArr[1]}; 
    }; 
} 

function convertString(string) { 
 
     string = string.slice(1, string.length - 1); 
 
     return string.split(', ').map(function(a) { 
 
     var kvArr = a.split('='); 
 
     return {key: kvArr[0], value: kvArr[1]}; 
 
     }); 
 
} 
 

 
alert(JSON.stringify(convertString("{one=Print, two=Email, three=Download, four=Send to Cloud}")));

Verwandte Themen