将string中的函数参数转换为object中的参数

时间:2016-05-04 09:32:45

标签: javascript node.js function-parameter

我正在使用node.js。

我有一个可以这样调用的函数;

add_row({location:'L1', row_name:'r1', value:'18.4'});

我有这样的字符串;

var str_param = "location:'L1', row_name:'r1', value:'18.4'";

我尝试做这样的事情来保持我的代码简单;

add_row(str_param);

它不起作用。使用str_param来呼叫add_row的好方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以将字符串转换为函数接受的对象。

function toObj(str) {
  const a = str.split(/,.?/g);
  return a.reduce((p, c) => {
    const kv = c.replace(/'/g, '').split(':');
    p[kv[0]] = kv[1];
    return p;
  }, {});
}

toObj(str); // { location: "L1", row_name: "r1", value: "18.4" }

DEMO

答案 1 :(得分:0)

我认为这可能是你的问题:

{location:'L1', row_name:'r1', value:'18.4'} // Object
var str_param = "location:'L1', row_name:'r1', value:'18.4'"; // Not object

var str_param = "{location:'L1', row_name:'r1', value:'18.4'}"; // Object String

我不使用Node JS,只是在黑暗中拍摄。如果没有,你可以像下面这样的功能:

function addRow(pLocation, pRowName, pValue) {
    var row = {
        location: pLocation,
        row_name: pRowName,
        value: pValue
    }

    // Logic ....
}

如果这不起作用尝试使用Object字符串并查看函数ParseJSON我相信它被调用。