2015-11-27 31 views
0

我在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); 

}); 

正如你所看到的“vaccinaties”有逗号分隔的字符串。我想(动态)检查dataObj并将所有逗号分隔的字符串更改为数组。这里的正确方法是什么?

+3

循环遍历对象的所有属性。检查属性值是否包含“,” - 分割“,”字符上的值并将结果数组分配给属性。 – HaukurHaf

回答

4
  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>

+1

当然..我只是在想整个其他的解决方案,而上述是疯狂的明显。谢谢。 –

相关问题