将序列化数据转换为数组或对象

时间:2016-11-18 01:38:18

标签: javascript arrays object serialization

我有一个这样的字符串:

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

我需要将此字符串转换为数组(或对象)。而且我有很多这样的字符串也可以转换为数组。有没有办法自动将这样的字符串转换为javascript数组?

3 个答案:

答案 0 :(得分:2)

当您传输字符串作为参数时,此函数将返回一个对象:

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 like Object {redMultiplier:0,greenMultiplier:0,blueMultiplier:0,alphaMultiplier:1}

答案 1 :(得分:2)

您可以使用RegExp。

@-webkit-keyframes cloud_one {
    0% { transform: translate3d(0,0,0); }
  100% { transform: translate3d(-200%,0,0); }
}

答案 2 :(得分: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);