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

时间:2019-03-06 03:41:48

标签: javascript

我正在尝试以下代码:

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值。 我该如何实现?

5 个答案:

答案 0 :(得分:3)

您可以使用spread syntax将数组扩展到新对象中。我看不到根据您的预期输出仅包含一个对象的数组:[{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;}

答案 1 :(得分:1)

使用[]括号表示法来评估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]);

答案 2 :(得分:1)

您可以使用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; }

答案 3 :(得分:0)

您可以使用扩展语法

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

答案 4 :(得分:0)

另一种方法是使用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; }