Javascript 如何将逗号分隔的字符串转换为对象中的单独数组?

Javascript 如何将逗号分隔的字符串转换为对象中的单独数组?,javascript,arrays,string,object,Javascript,Arrays,String,Object,如何使用javascript将上述字符串转换为对象内的单独数组,如: let myStr = "dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james"; 分开绳子 { dress = ["cotton","leather","black","red","fabric"]; houses = ["restaurant","s

如何使用javascript将上述字符串转换为对象内的单独数组,如:

let myStr = "dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james";
分开绳子

{
  dress = ["cotton","leather","black","red","fabric"];
  houses = ["restaurant","school","small","big"];
  person = ["james"];
}

可能的方法是使用
数组#forEach

let myStr=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房子/餐厅/小,房子/学校/大,人/詹姆斯”。split(','),obj={};
myStr.forEach(函数(v){
(obj[v.split('/')[0]]| |(obj[v.split('/')[0]]=[])).push(…v.split('/')).slice(1));
});
控制台日志(obj)
您可以使用
split()
获取元素数组,然后在该数组上使用
reduce()
构建对象作为结果

let myStr=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房子/餐厅/小,房子/学校/大,人物/詹姆斯”;
var result=myStr.split(',).reduce(函数(r,a){
变量e=a.split('/');
如果(!r[e[0]])r[e[0]=[]
r[e[0].推送(…e.切片(1));
返回r
}, {})

console.log(result)
您可以将字符串分成组,然后再分成值。将第一个作为值的键,并将值合并到旧项或新数组中。然后使用键将其指定给对象

var string=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房屋/餐厅/小型,房屋/学校/大型,个人/詹姆斯”,
结果={};
string.split(',).forEach(函数(a){
var值=a.split('/'),
key=values.shift();
结果[键]=(结果[键]| |[])。concat(值);
});
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以执行以下操作:

let myStr=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房子/餐厅/小,房子/学校/大,人物/詹姆斯”;
var obj=myStr.split(“,”).reduce((ret,val)=>{
var arr=val.split(“/”);
如果(ret[arr[0]]){
ret[arr[0]].push(…arr.filter((v,i)=>i!=0));
}否则{
ret[arr[0]]=arr.filter((v,i)=>i!=0);
}
返回ret;
}, {});
控制台日志(obj)
let myStr=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房子/餐厅/小,房子/学校/大,人物/詹姆斯”;
让res=myStr.split(',')。reduce((acc,s)=>{
设parts=s.split('/'),
cat=零件。shift();
如果(附件[cat])
acc[cat]=acc[cat].混凝土(零件);
其他的
acc[cat]=零件;
返回acc;
}, {});
控制台日志(res)
let myStr=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房子/餐厅/小,房子/学校/大,人物/詹姆斯”;
让输出={};
myStr.replace(/\s*,\s*/gi,“,”).split(“,”).forEach(项=>{
设itemArr=item.split(“/”);
if(itemArr&&itemArr.length){
var key=itemArr[0];
输出[key]=(output.hasOwnProperty(key))?
输出[key].concat(itemArr.slice(1,itemArr.length)):itemArr.slice(1,itemArr.length);
}
});
控制台日志(输出)
var myStr=“连衣裙/棉质/黑色,连衣裙/皮革/红色,连衣裙/面料,房屋/餐厅/小型,房屋/学校/大型,个人/詹姆斯”;
var Arr=myStr.split(',');
var keyJSON=新数组();
$。每个(Arr,函数(i,o){
var key=o.split('/')[0];
push(key);
$.unique(keyJSON);
});
var finalArr=新数组();
$.each(keyJSON,函数(keyI,keyO){
finalArr[keyO]=新数组();
});
$。每个(Arr,函数(i,o){
var innerArr=o.split('/');

对于(var ind=1;ind)到目前为止,您尝试了什么?您可以将该代码放入问题中吗?您应该查看
String.split()
…非常感谢,您使它变得非常简单易懂。这正是我想要的!尝试使用code finalArr数组变量按预期存储最终结果
//The Entry String
myStr = "dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james";

//The first Array
var objectArray = myStr.split(',');

//Loop trough each item of the array
for(var i in objectArray){
    //The final sub-array
    objectArray[i] = objectArray[i].split('/');
}
var myStr = "dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james";
var Arr = myStr.split(', ');
var keyJSON = new Array();
$.each(Arr,function(i,o){
var key = o.split('/')[0];
keyJSON.push(key);
$.unique(keyJSON);
});
var finalArr = new Array();
$.each(keyJSON,function(keyI,keyO){
    finalArr[keyO] = new Array();
});
$.each(Arr,function(i,o){
    var innerArr = o.split('/');
    for(var ind=1;ind<innerArr.length;ind++){
        finalArr[innerArr[0]].push(innerArr[ind]);
    }
});