我正在尝试将具有键值对的数组转换为仅具有数据(无键)的简单对象。
我有一个这样的数组...
[
0:{pos: 0, color: "#4a55e5"}
1:{pos: 0.2, color: "#206bcb"}
2:{pos: 0.4, color: "#edffff"}
3:{pos: 0.6, color: "#ffaa00"}
4:{pos: 0.8, color: "#000200"}
5:{pos: 1, color: "#000764"}
]
我需要把它转换成这样...
colorStops = {
0: "#4a55e5",
0.2: "#206bcb",
0.4: "#edffff",
0.6: "#ffaa00",
0.8: "#000200",
1: "#000764"
}
我想我需要遍历数组并以某种方式将值插入对象...
colorStops = {};
for(var i=0; i<color.length; i++){
colorStops[i] = color[i].pos : color[i].color;
}
我只包含这个是为了更好地说明我想要什么。当然,这是行不通的,会导致错误。
最佳答案
将此语句 colorStops[i] = color[i].pos : color[i].color;
更改为
colorStops[color[i].pos] = color[i].color;
var color = [ {pos: 0, color: "#4a55e5"}, {pos: 0.2, color: "#206bcb"}, {pos: 0.4, color: "#edffff"}, {pos: 0.6, color: "#ffaa00"}, {pos: 0.8, color: "#000200"}, {pos: 1, color: "#000764"} ];
colorStops = {};
for(var i=0; i<color.length; i++){
colorStops[color[i].pos] = color[i].color;
}
console.log(colorStops);
您可以使用array#reduce
和object#destructuring
来创建您的对象。
var data = [ {pos: 0, color: "#4a55e5"}, {pos: 0.2, color: "#206bcb"}, {pos: 0.4, color: "#edffff"}, {pos: 0.6, color: "#ffaa00"}, {pos: 0.8, color: "#000200"}, {pos: 1, color: "#000764"} ];
var result = data.reduce((o,{pos, color}) => (o[pos] = color, o), {});
console.log(result);
关于javascript - 将对象数组转换为只有值的对象(没有索引或键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615176/