我正在嘗試生成一個如下所示的物件:
{
"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),并且會有多個與每個狀態匹配的圖。每個圖都是一個物件。
上面的代碼片段目前不起作用,有人有建議嗎?
uj5u.com熱心網友回復:
- 在 JS 中,陣列沒有命名鍵,它只是一個事物串列。如果您想要命名鍵,請使用物件
{} 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);
};
uj5u.com熱心網友回復:
從上面的評論...
“目標格式甚至不是有效的 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;
}, {});
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345361.html
標籤:javascript 数组 目的 foreach 降低
