我有兩個結構如下的物件:
const pageContent =
[
{
header: 'title 1',
subHeader: [ 'subtitle 1']
},
{
header: 'title 2',
subHeader: [ ]
},
{
header: 'title 3',
subHeader: [ 'subtitle 2', 'subtitle 3', 'subtitle 4' ]
}
]
const subPageContent =
[
{
masterHeader: ' ', // === header: 'title 1'
header: [ 'subtitle 1' ]
},
{
masterHeader: ' ', // === header: 'title 3'
header: [ 'subtitle 2' ]
},
{
masterHeader: ' ', // === header: 'title 3'
header: [ 'subtitle 3' ]
},
{
masterHeader: ' ', // === header: 'title 3'
header: [ 'subtitle 4' ]
}
]
編輯注意: subPageContent-Object 定義錯誤。
目前,這兩個物件是分開的,但將在進一步的步驟中連接起來。但是,我需要 subPageContent 的每個“標題”對應的“masterHeader”,它可以在 pageContent 中作為“標題”找到
所以我所擁有的是:
function search(searchTerm, array){
for ( let i = 0; i < array.length; i ) {
if ( array[i].subHeader[i] === searchTerm ) {
return array[i].header
}
}
}
let searchTerm = 'subtitle 1'
let resultObject = search(searchTerm, pageContent)
這很好用,以防我的 pageContent 的 subHeader-Array 中只有一個值。
我在對具有多個值的陣列進行迭代時遇到了困難。我想我會做第二個 for 回圈,然后回傳相應的標題:
function searchTwo(searchTerm, array) {
for ( let i = 0; i < array.length; i ) {
for ( let j = 0; j < array[j].length; j ) {
if ( array[j].subHeader[j] === searchTerm ) {
return array[j].header
}
}
}
}
有誰知道,我如何回圈物件內的陣列?一旦我發現該物件將標題設定為 subPageContent 中的 masterHeader 值?
下一步將是構建一個 forEach-Loop,因此它將搜索 subPageContent-Object 中每個元素的缺失 masterHeader。
uj5u.com熱心網友回復:
正如評論中提到的@pilchard,您可以Array.find結合使用Array.includes來實作屬性是陣列的search函式。subHeader然后,您可以將此函式與 a 結合使用forEach以使用值更新subPageContent陣列masterHeader:
const pageContent =
[
{ header: 'title 1', subHeader: [ 'subtitle 1'] },
{ header: 'title 2', subHeader: [ ] },
{ header: 'title 3', subHeader: [ 'subtitle 2', 'subtitle 3', 'subtitle 4' ] }
]
const subPageContent =
[
{ masterHeader: ' ', header: [ 'subtitle 1' ] },
{ masterHeader: ' ', header: [ 'subtitle 2' ] },
{ masterHeader: ' ', header: [ 'subtitle 3' ] },
{ masterHeader: ' ', header: [ 'subtitle 4' ] }
]
function search(searchTerm, array) {
return array.find(({ subHeader }) => subHeader.includes(searchTerm))?.header
}
subPageContent.forEach(o => o.masterHeader = search(o.header[0], pageContent) || o.masterHeader)
console.log(subPageContent)
請注意,我們|| o.masterHeader在更新程式中使用,因此如果在任何陣列中header都找不到該值(在這種情況下將回傳),則 的值保持原樣。subHeadersearchundefinedmasterHeader
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/512807.html
