首页 > 解决方案 > 将逗号分隔的字符串推送到对象中的新属性

问题描述

我正在尝试遍历字符串对象,偶尔它会返回一些逗号分隔的列表。我想将它们拆分为它们自己的属性。

目前我得到这个

emailList = {
  0: "email-1@site.com",
  1: "email-2@site.com,email-3@site.com,email-4@site.com,email-5@site.com",
  2: "email-6@site.com",
  3: "email-7@site.com,email-8@site.com"
}

但是需要这样

emailList = {
  0: "email-1@site.com",
  1: "email-2@site.com",
  2: "email-3@site.com",
  3: "email-4@site.com",
  4: "email-5@site.com",
  5: "email-6@site.com",
  6: "email-7@site.com",
  7: "email-8@site.com",
}

我的想法是尝试类似

var listSplt = '';
for(key in emailList){
    listSplt += emailList[key].split(',');
}

但这给了我undefinedemail-1@site.comemail-2@site.com,email-3@site.com,email-4@site.com,email-5@site.comemail-6@site.comemail-7@site.com,email-8@site.com在开始时得到未定义而在 1 之后没有逗号的地方。

我也觉得这种将其变回对象的解决方案会有点费力或过于复杂。我需要注意的另一个问题是我不能使用 ES6,因为我运行它的系统不是最新的。

标签: javascriptloopsobject

解决方案


function splitByComma(obj) {
   let result = {}
   let index = 0
   for(let key in obj) {
         const item = obj[key]
         const splitItem = item.split(“,”)
         splitItem.forEach((it)=> {
               if(it) {
                   result[index] = it
                   index++
               }
          })
    }
    return result
}

obj您的输入对象在哪里。

非 ES6:

function splitByComma(obj) {
       var result = {}
       var index = 0
       for(let key in obj) {
             var item = obj[key]
             var splitItem = item.split(“,”)
             for(var i = 0; i < splitItem.length; i++) {
                   const it = splitItem[i]
                   if(it) {
                       result[index] = it
                       index++
                   }
              })
        }
        return result
}

推荐阅读