有一个对象包含与UI相关的变量。
const data = [
{ color: [{ primary: "#444", secondary: "#dede", light: "#fff" }] },
{ size: [12,14,16,18,20] },
...
];
我想让这个对象成为一个单独的数组,如:
const UI = [
{ colorPrimary: "#444" },
{ colorSecondary: "#dede" },
{ colorLight: "#fff" },
{ size0: 12 },
{ size1: 14 },
{ size2: 16 },
{ size3: 18 },
{ size4: 20 },
...
];
如何使用ramda执行此操作?
答案 0 :(得分:1)
由于我的评论中表达的原因,我没有一个干净的方法来处理所提供的数据:
你如何区分像
color
这样的属性,你似乎忽略了保存数据的数组,以及像size
这样的属性,其中数组索引成为键的一部分?
但只需稍微调整一下您的数据,就可以了:
const data = [
{ color: { primary: "#444", secondary: "#dede", light: "#fff" } },
{ size: [12,14,16,18,20] },
];
这是相当简单的:
const initialCap = str => toUpper(head(str)) + tail(str);
const collectProps = pipe(
map(map(toPairs)),
apply(merge),
mapObjIndexed((pairs, key) => map(
pair => objOf(key + initialCap(pair[0]), pair[1]), pairs
)),
values,
apply(concat)
);
collectProps(data);
您可以在 Ramda REPL 上看到这一点。
我对您的数据来源一无所知,所以我不知道您是否可以管理这些数据。但如果可以的话,这看起来应该可行。