繁体   English   中英

如何将数字数组转换为字典

[英]how to convert array of numbers to dictionary

我正在尝试以下代码:

dict=deliveryDays.split(";").map((item,i)=>{
    return ({ i :item})
});

deliveryDays是一个数字数组,但是{i:item}中的i并非映射中传递的i。 我想要的是:

[{0:"1", 1:"1", 2:"1" }]

但是我看到的是:

[{"i":"0"},{"i":"1"},{"i":"1"}]

因此,如您所见,i无法获得正确的i值。 我该如何实现?

您可以使用传播语法在新对象中传播数组。 我看不到根据您的预期输出仅包含一个对象的数组的意义: [{0:"1", 1:"1", 2:"1" }] 所以我的第一个猜测是您需要这个:

 let deliveryDays = "1;2;3;4;5" let obj = {...deliveryDays.split(";")}; console.log(obj); 
 .as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;} 

如果您仍然需要数组中的唯一对象,那么很容易弄清楚下一个代码会做到这一点:

let obj = [{...deliveryDays.split(";")}];

另一方面,如果您想要一个包含多个对象的数组,则可以执行以下操作:

 let deliveryDays = "1;2;3;4;5" let res = deliveryDays.split(";").map((x, idx) => ({[idx]: x})); console.log(res); 
 .as-console {background-color:black !important; color:lime;} .as-console-wrapper {max-height:100% !important; top:0;} 

使用[]括号表示法评估i的值。 因此,在您的情况下,不对其进行评估,而只是在对象的键中将"i"作为字符串输出。

 const deliveryDays = "1;2;3;4"; const dict = deliveryDays.split(";").map((item,i)=> ({[i]:item})); console.log(dict); 

但我相信您希望将其作为包装在数组中的单个对象使用Array.reduce来完成:

 const deliveryDays = "1;2;3;4"; const dict = deliveryDays.split(";").reduce((acc,item,i)=>{ acc[i] = item; return acc; },{}); console.log([dict]); 

您可以使用Object.assign()

 const deliveryDays = '1;2;3;4;5;6'; const dict = [Object.assign({}, deliveryDays.split(';'))]; console.log(dict); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

您可以使用价差语法

 const arr = [0, 1, 1]; let result = [{...arr}] console.log(result); 

一种方法是使用Object.entries

 const deliveryDays = [1, 2, 3, 4, 5, 6]; const dict = Object.entries(deliveryDays).map(([key,value])=>({[key]:value})) console.log(dict); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM