我有一个字符串as
string = "firstName:name1, lastName:last1";
现在我需要一个对象obj这样
obj = {firstName:name1, lastName:last1}
我如何在JS中做到这一点?
我有一个字符串as
string = "firstName:name1, lastName:last1";
现在我需要一个对象obj这样
obj = {firstName:name1, lastName:last1}
我如何在JS中做到这一点?
当前回答
我使用的是JSON5,它工作得非常好。
好的部分是它不包含eval和new Function,使用起来非常安全。
其他回答
这是通用代码,不管你的输入有多长,但如果有:分隔符:)
var string = "firstName:name1, lastName:last1";
var pass = string.replace(',',':');
var arr = pass.split(':');
var empty = {};
arr.forEach(function(el,i){
var b = i + 1, c = b/2, e = c.toString();
if(e.indexOf('.') != -1 ) {
empty[el] = arr[i+1];
}
});
console.log(empty)
如果你正在使用JQuery:
var obj = jQuery.parseJSON('{"path":"/img/filename.jpg"}');
console.log(obj.path); // will print /img/filename.jpg
记住:eval是邪恶的!: D
在你的情况下,简短而漂亮的代码
Object.fromEntries(str.split(',').map(i => i.split(':')));
我在几行代码中实现了一个相当可靠的解决方案。
有一个像这样的HTML元素,我想传递自定义选项:
<div class="my-element"
data-options="background-color: #dadada; custom-key: custom-value;">
</div>
函数解析自定义选项并返回一个对象以在某处使用:
function readCustomOptions($elem){
var i, len, option, options, optionsObject = {};
options = $elem.data('options');
options = (options || '').replace(/\s/g,'').split(';');
for (i = 0, len = options.length - 1; i < len; i++){
option = options[i].split(':');
optionsObject[option[0]] = option[1];
}
return optionsObject;
}
console.log(readCustomOptions($('.my-element')));
const text = '{"name":"John", "age":30, "city":"New York"}';
const myArr = JSON.parse(text);
document.getElementById("demo").innerHTML = myArr.name;