我在 Javascript 中有以下对象:
{
birthdate: "25/11/2015",
coccidiose: "on",
giardia: "on",
holiday: "on",
holidaycountrycheck1: "on",
holidayenddate: "03/12/2015",
holidayeurope: "true",
holidaystartdate: "02/12/2015",
name: "qsdf",
treatmentstartdate: "18/11/2015",
type: "cat",
vaccinaties: "11/11/2015, 18/11/2015",
weight: "qsd"
}
该对象是通过以下方式在提交表单时生成的:
$('.js--submit-form__add-animal').on('click', function (e) {
e.preventDefault();
dataArray = $(this).closest('form').serializeArray(),
len = dataArray.length,
dataObj = {};
for(i = 0; i < len; i++) {
if(([dataArray[i].name] in dataObj)) {
dataObj[dataArray[i].name] = dataObj[dataArray[i].name] + ", " + dataArray[i].value;
} else {
dataObj[dataArray[i].name] = dataArray[i].value;
}
}
console.log(dataObj);
});
如您所见,“疫苗接种”有一个逗号分隔的字符串。我想(动态)检查 dataObj 并将所有逗号分隔的字符串更改为数组。这里正确的方法是什么?
最佳答案
- 循环对象
- 检查值是否为常量
,
- 用逗号分割得到数组
var obj = {
birthdate: "25/11/2015",
coccidiose: "on",
giardia: "on",
holiday: "on",
holidaycountrycheck1: "on",
holidayenddate: "03/12/2015",
holidayeurope: "true",
holidaystartdate: "02/12/2015",
name: "qsdf",
treatmentstartdate: "18/11/2015",
type: "cat",
vaccinaties: "11/11/2015, 18/11/2015",
weight: "qsd"
};
// Get array of keys and loop over it
Object.keys(obj).forEach(function(e) {
if (obj[e].indexOf(',') > -1) {
// If value contains `,` then split it by , with prev/next spaces
obj[e] = obj[e].split(/\s*,\s*/);
}
});
document.getElementById('result').innerHTML = JSON.stringify(obj, 0, 4);
console.log(obj);
<pre id="result"></pre>
关于javascript - 检查对象中逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958797/