我正在尝试以下代码:
dict=deliveryDays.split(";").map((item,i)=>{
return ({ i :item})
});
deliveryDays是一个数字数组,但我在{i:item}内部并不是我在地图中传递的数字。我想要的是:
[{0:"1", 1:"1", 2:"1" }]
但我看到的是:
[{"i":"0"},{"i":"1"},{"i":"1"}]
所以你可以看到我没有得到正确的价值。我怎样才能做到这一点?
您可以使用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;}
使用[]
括号表示法来评估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; }
您可以使用Spread Syntax
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; }