多次元連想配列があります。
this.items = ko.observableArray([
{ name: "name1", viewable: true, children: [
{ name: "name1-1", viewable: true, children: []},
{ name: "name1-2", viewable: false, children: []}
] },
{ name: "name2", viewable: false, children: [] },
{ name: "name3", viewable: true, children: [
{ name: "name3-1", viewable: true, children: []},
] },
{ name: "name4", viewable: true, children: [] }
]);
目標は、この配列をループして、'viewable' が true に設定されている値のみを出力することです。
一連の if ステートメントと foreach ステートメントを使用してこれを機能させていますが、コードが手に負えなくなり始めています。この例では 2 レベルしかカバーしていませんが、私の配列は最大5 レベルの深さまで取得できるため、このコードは倍増し、すぐに見苦しくなります。
<ul data-bind="foreach: items">
<!-- ko if: viewable -->
<li data-bind="text: name"></li>
<!-- ko foreach: children -->
<!-- ko if: viewable -->
<li data-bind="text: name"></li>
<!-- /ko -->
<!-- /ko -->
<!-- /ko -->
</ul>
では、配列全体をループするより簡単でより良い方法はありますか?