2016-11-18 64 views
1

我有一個字符串是這樣的:串行化的數據轉換爲陣列或對象

(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=0, greenOffset=102, blueOffset=51, alphaOffset=0)

我需要將此字符串轉換爲陣列(或對象)。而且我也有很多這樣的字符串轉換爲數組。有沒有什麼辦法可以像這樣自動將字符串轉換爲javascript數組?

+0

你能顯示預期的輸出嗎?陣列看起來像什麼? –

+0

輸出可以是這樣的對象:'{redMultiplier:0,greenMultiplier:0 ...};',因爲如果我沒有錯,命名的數組索引在js中不起作用。 – wmarquardt

回答

1

此功能,當你發送一個字符串,將返回一個對象作爲它的參數:

function convert(str){ 
    str = str.replace(/\(|\)/g,''); 
    var arr = str.split(','); 
    var obj = {}; 
    for (var i = 0; i < arr.length; i++) { 
     var singleArr = arr[i].trim().split('='); 
     var name = singleArr[0]; 
     var value = singleArr[1]-0; 
     if (obj[name] == undefined) { 
     obj[name] = value; 
     } 
    } 
    return obj; 
    } 

obj的喜歡對象{redMultiplier:0,greenMultiplier:0,blueMultiplier:0,alphaMultiplier:1}

1

下面是如何轉換成array

var str = "(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=0, greenOffset=102, blueOffset=51, alphaOffset=0)".replace(/[()]/g, ''); 
console.log(str.split(',')); 
var newArr = str.split(','); 
var finalArr = []; 
newArr.map((elem) => { 
    finalArr.push(elem.replace('=', ':')); 
}); 

console.log(finalArr); 
2

您可以使用正則表達式。

var str = '(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=0, greenOffset=102, blueOffset=51, alphaOffset=0)' 

var obj = {}; 

str.replace(/(\w+)=(\d+)/g, function (match, $1, $2){ 
    obj[$1] = parseInt($2); 
}); 

console.log(obj);