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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.