2

I have following string:

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

and want to convert it to key value object like below using jQuery.

attrs = {
        FName:abraham,
        LName:lincoln,
        COUNTRY:USA,
        JOB:PRESIDENT
        }
1
  • use split function of jquery and then arrange them into proper order as you want for example ` var attrs = "FNAME=abraham,LNAME=lincoln,COUNTRY=USA,JOB=PRESIDENT"; var ind = attrs.split(',');` Commented Aug 16, 2018 at 13:02

4 Answers 4

4

you can make use of split and create object, see below

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);

Sign up to request clarification or add additional context in comments.

1 Comment

Also check out my answer in ES6 flavor.
1

$(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);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Comments

1

I suggest you to use:

  • .split(",") to separate your key=value elements,
  • .forEach() to go through all your elements, with .split("=") to separate your keys and values.

Working snippet:

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);

You could even use some deconstructing:

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);

Comments

0

A ES6 flavoured answer :)

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);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.