Comma Separated Key and Value string for an object using jquery or javascript

I read the property of the HTML element using JavaScript as follows:

<table data-option="pageSize:10, pageNumber:1, rowNumber:true"></table>

I will have a line like this:

attrs="pageSize:10, pageNumber:1, rowNumber:true";

I have a key and a value for a JavaScript object like this:

obj={pageSize:12, pageNumber:1, rowNumber:true}

I want to convert my attrs to an object as obj.

+4
source share
2 answers

Option 1.

Save the whole json encoded string.

Option 2

To convert this from a string to an object using JSON.parse, you will need double quotes.

Using the regular expression to add double quotes made here , we get the desired result:

attrs = ("{" + attrs + "}").replace(/([{,])(\s*)([A-Za-z0-9_\-]+?)\s*:/g,'$1"$3":');
var obj = JSON.parse(attrs);

UPD:

epascarello, , name: Jack, , , . , , - ,

-1

var attr = $('table').data('option');
var obj  = {};

$.each(attr.split(','), function(index, item) {
    var parts = $.map(item.split(':'), function(part) {
        part = $.trim(part);
        if ( +part == part ) return +part
        else if ( part === 'true' ) return true
        else if ( part === 'false') return false
        else return part;
    });
    obj[parts[0]] = parts[1];
});

var attr = $('table').data('option');
var obj  = {};

$.each(attr.split(','), function(index, item) {
	var parts = $.map(item.split(':'), function(part) {
    	part = $.trim(part);
    	if ( +part == part ) return +part
        else if ( part === 'true' ) return true
        else if ( part === 'false') return false
        else return part;
	});
    obj[parts[0]] = parts[1];
});

document.body.innerHTML = '<pre>' + JSON.stringify(obj, null, 4) + '</pre>';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table data-option="pageSize:10, pageNumber:1, rowNumber:true"></table>
Hide result
0

Source: https://habr.com/ru/post/1621783/


All Articles