javascript/jQuery: 怎么动态地将属性值转换为对象的键?
javascript/jQuery: 怎么动态地将属性值转换为对象的键?
这个问题已经有了答案:
可能是重复问题:
这是我的问题,我有许多像这样的元素...
每个元素都有相应的JSON形式的\"data-key\"和\"data-item\",看起来像这样...
{ "measurements" : {"sleeve_length" : value, "inseam" : value},
每个\"data-item\"都是唯一的...并且当不是这样时像这样...
"contact_details" : [ {"email" : value, "mobileNo" : value}, {"email" : value, "mobileNo" : value} ] }
现在,因为我的Web应用程序涉及许多表单,我需要一种动态转换上面的标记为这些JSON字符串的方法...但我似乎无法理解它!
有人有任何想法可以帮助我解决这个问题吗?
admin 更改状态以发布 2023年5月20日
你可以让一些JS MVC / MVVC库来为你做这个。例如,Knockout。我自己还没有使用过它,但从一瞥它看起来很不错。你定义 JSON 对象和 HTML 表单字段之间的映射,该库将监视表单字段并更新 JSON 对象(一个“视图模型”)。
大致就像这样:
var json = {}; $('#path .to input').each(function(e) { var key = $(this).attr('data-key'); var param = $(this).attr('data-item'); var obj = {}; obj[param] = $(this).val(); // If we already have a record... if(key in json) { // If it's not an array, make it an array if(typeof(json[key].push) != 'function') json[key] = [ json[key] ]; // Toss it on the pile json[key].push(obj); } else { // There's only 1 thus far, keep it k/v json[key] = obj; } });
等等。相当基础,重点就是测试你所工作的关键字是否存在,如果存在,就将其转换为数组。
编辑:这未经测试,但应该可以工作。
编辑2:修改代码,使你的哈希关键字变量不会被识别为字符串。