【问题标题】:How to get name and values from a javascript object into a new list?如何从 javascript 对象中获取名称和值到新列表中?
【发布时间】:2020-11-09 02:07:33
【问题描述】:

我有这个 JavaScript 对象,它是多个列表的集合(我相信)。我需要创建一个名称为列表名称的选择下拉列表,以及许多具有该名称背景颜色的框。像这样:

我能够解析该对象以获取所有颜色的名称,但我找不到解析名称和它所包含的值列表的方法。这就是我尝试的方式:

var
    YlGn3 = ['#f7fcb9', '#addd8e', '#31a354'],
    YlGn4 = ['#ffffcc', '#c2e699', '#78c679', '#238443'],
    YlGn5 = ['#ffffcc', '#c2e699', '#78c679', '#31a354', '#006837'];

var brewer = Object.freeze({
    YlGn3: YlGn3,
    YlGn4: YlGn4
});

var office = Object.freeze({
    YlGn5: YlGn5
});

var colorschemes = {
    brewer: brewer,
    office: office
};

var scheme_list = [];

for (i in colorschemes){
 for(j in colorschemes[i]){
  console.log(j);
  scheme_list.push(j);
 }
}

我正在考虑创建一个新对象并附加每种颜色以及颜色列表,因此我可以再次解析它以使用它创建一个选项元素。但是,我无法找出最好的方法来做到这一点。这是正确的做法吗?

【问题讨论】:

  • 什么是export_colors
  • 我的错,是colorschemes。已编辑。
  • 你为什么不能把所有的数组放到一个数组中然后循环呢? const colors = [YlGn3, YlGn4, YlGn3]; colors.forEach(arr=>arr.forEach(c=>{}))
  • @hev1 实际上,上面定义的所有颜色都来自第三方 js 文件,因此无法更改。
  • "这是正确的方法吗?"你得到预期的结果了吗?

标签: javascript arrays list select


【解决方案1】:

您多次使用Object.valuesforEach

Object.values(colorschemes).forEach(obj=>Object.entries(obj).forEach(([name,colors])=>{
  const arr = [];
  colors.forEach(color=>arr.push(color));
  scheme_list.push([name, arr]);
}));

var
    YlGn3 = ['#f7fcb9', '#addd8e', '#31a354'],
    YlGn4 = ['#ffffcc', '#c2e699', '#78c679', '#238443'],
    YlGn5 = ['#ffffcc', '#c2e699', '#78c679', '#31a354', '#006837'];

var brewer = Object.freeze({
    YlGn3: YlGn3,
    YlGn4: YlGn4
});

var office = Object.freeze({
    YlGn5: YlGn5
});

var colorschemes = {
    brewer: brewer,
    office: office
};

var scheme_list = [];
Object.values(colorschemes).forEach(obj=>Object.entries(obj).forEach(([name,colors])=>{
  const arr = [];
  colors.forEach(color=>arr.push(color));
  scheme_list.push([name, arr]);
}));
console.log(scheme_list);

【讨论】:

  • 好先生,我们在这里得到了每一个颜色值,但我想要颜色值和颜色方案的名称。我找到了一种仅获取名称或仅获取每种颜色的方法。但我的问题是让他们两个。我将更新我的问题,以清楚地询问我最后想要什么格式。
  • @RohitKumar 更新了我的答案。
猜你喜欢
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-13
  • 2019-12-04
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
相关资源
最近更新 更多