javascript - 将对象数组转换为只有值的对象(没有索引或键)

标签 javascript arrays javascript-objects

我正在尝试将具有键值对的数组转换为仅具有数据(无键)的简单对象。

我有一个这样的数组...

[
  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#reduceobject#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/

相关文章:

javascript - 最大高度/行和设置滚动

Python:为什么这个数组获得 'gridwidth' 数量的索引?

Javascript 过滤器很慢

javascript - 分配 Javascript 对象属性

javascript - 使用javascript代理拦截方法调用时进行非法调用

javascript - 如何在 JavaScript 中删除对象数组中的重复对象

javascript - 一个 html 文件中的多个页面,每一页上没有固定的导航

javascript - JSONP 使用 - 范围或异步问题?使用 JQuery

python - 避免循环数组来获取 numpy 中元素的乘积

javascript - 无论如何,我可以通过使用循环来减少我的 jQuery 代码吗?