[英]How does one create a filter condition based on a configuration object for filtering data-items of an array?
[英]How does one create an object from an array of data items?
我正在尝试生成一个如下所示的对象:
{
"te-koop": [{ /*plot 1*/ }, { /*plot 1*/ }],
"in-optie": [{ /*plot 3*/ }, { /*plot 4*/ }],
"verkocht": [{ /*plot 5*/ }, { /*plot 6*/ }],
}
带有 forEach 循环。 这是我的代码:
makeArrayFilteredPlots = () => {
const plots = [];
this.props.filteredPlots.forEach((plot) => {
const status = plot.entity.status.slug;
plots[status].push(plot);
});
};
每个状态代表每个键(te-koop、in-optie、verkocht),并且会有多个与每个状态匹配的图。 每个图都是一个对象。
上面的代码片段目前不起作用,有人有建议吗?
{}
plots[status]
永远不会被初始化。 当您尝试在未定义的内容中使用.push()
内容时,脚本会崩溃。 在开始向其中推送内容之前,将其初始化为一个空数组。 makeArrayFilteredPlots = () => { let plots = {}; this.props.filteredPlots.forEach((plot) => { const status = plot.entity.status.slug; plots[status] = plots[status] || []; // Initialize an empty array plots[status].push(plot); }); console.log(plots); };
从上面的评论...
“目标格式甚至不是有效的 JS 语法。无法清楚地看出 OP 是否要生成数组项,其中每个项都是一个具有单个键(或其他东西)的对象。从生成代码来看,它看起来像 OP想要创建/聚合一个对象,其中每个条目(键值对)都是一个数组。但是我们不是在谈论多维数组。”
复杂的猜测......基于reduce
的任务应该解决OP的问题,即生成像plot
特定数组的对象这样的配置......
const plotsConfig = this
.props
.filteredPlots
.reduce((result, plot) => {
const plotKey = plot.entity.status.slug;
const plotList = result[plotKey] ??= [];
plotList.push(plot);
return result;
}, {});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.