【问题标题】:Convert comma separate string to Key value object jQuery将逗号分隔的字符串转换为键值对象jQuery
【发布时间】:2019-01-23 10:44:50
【问题描述】:

我有以下字符串:

var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT"

并希望使用 jQuery 将其转换为如下所示的键值对象。

attrs = {
        FName:abraham,
        LName:lincoln,
        COUNTRY:USA,
        JOB:PRESIDENT
        }

【问题讨论】:

  • 使用 jquery 的 split 函数,然后将它们按你想要的顺序排列,例如 ` var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT"; var ind = attrs.split(',');`

标签: jquery arrays json key-value key-value-store


【解决方案1】:

您可以使用拆分和创建对象,见下文

var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT";
var values = attrs.split(",");
var obj = {};
for(var i=0; i<values.length; i++) {
    var keyValue = values[i].split("=");
    obj[keyValue[0]] = keyValue[1];
}
console.log(obj);

【讨论】:

  • 还可以查看我的 ES6 风格答案。
【解决方案2】:

$(document).ready(function() {

  var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT"

  var keysValuesArray = attrs.split(',');
  // keysValuesArray = ["FNAME=abraham", "LNAME=lincoln", "COUNTRY=USA", "JOB=PRESIDENT"]

  var attrsObject = {};

  for (var i = keysValuesArray.length - 1; i >= 0; i--) {

    var keyValueArray = keysValuesArray[i].split('=');
    // Ex: keyValueArray = ["JOB", "PRESIDENT"]

    attrsObject[keyValueArray[0]] = keyValueArray[1];

  }

  console.log(attrsObject);

});
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

    【解决方案3】:

    我建议你使用:

    • .split(",") 分隔您的 key=value 元素,
    • .forEach() 遍历所有元素,.split("=") 分隔键和值。

    工作sn-p:

    var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT";
    var keys_vals = attrs.split(",");
    var obj = {};
    keys_vals.forEach(function(key_val) {
        var [key, val] = key_val.split("=");
        obj[key] = val;
    });
    console.log(obj);

    你甚至可以使用一些解构:

    var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT";
    var obj = {};
    attrs.split(",").forEach(function(key_val) {
        var [key, val] = key_val.split("=");
        obj[key] = val;
    });
    console.log(obj);

    【讨论】:

      【解决方案4】:

      一个 ES6 风格的答案:)

      const attrs = 'FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT';
      var obj = {};
      attrs.split(',').forEach((el) => {
          const [key, value] = el.split('=')
          obj[key] = value;
      })
      console.log(obj);

      【讨论】:

        猜你喜欢
        • 2019-02-11
        • 2016-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        相关资源
        最近更新 更多