2015-11-27 32 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

當然..我只是在想整個其他的解決方案,而上述是瘋狂的明顯。謝謝。 –

相關問題