检查对象中逗号分隔的字符串

Check object for comma separated strings

本文关键字:分隔 字符串 对象 检查      更新时间:2023-09-26

我在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并将所有逗号分隔的字符串更改为数组。这里的正确方法是什么?

  1. 循环对象
  2. 检查值是否恒定,
  3. 用逗号拆分以获得数组

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>