我有一個陣列 [name1,item1,name2,item2,name3...] 并且需要將它映射到
{
"@type": "ListItem",
position: index 1,
name: ,
item: ,
}
我試圖將它分成兩個單獨的陣列,例如:
var nameBreadCrumbStructuredData = splitBreadCrumbStructuredData.filter(
function (value, index, Arr) {
return index % 2 == 0;
}
);
var urlBreadCrumbStructuredData = splitBreadCrumbStructuredData.filter(
function (value, index, Arr) {
return index % 2 == 1;
}
);
var faqStructuredDataSplit = nameBreadCrumbStructuredData.map((i) => {
urlBreadCrumbStructuredData.map((j) => ({
"@type": "ListItem",
position: "",
name: i,
item: j,
}));
});
但不幸的是它不起作用。我嘗試了一些不同的方法,也嘗試了 forEach,但我被卡住了。任何人都可以幫助我如何回圈一個陣列但同時回圈第二個專案或兩個陣列?感謝您的幫助!
因此,我需要通過映射來獲得:
const breadCrumbStructuredData = {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: [
{
"@type": "ListItem",
position: 1,
name: "nameExample",
item: "https://example.com/",
},
{
"@type": "ListItem",
position: 2,
name: nameExampl1,
item: "https://example1.com/",
},
{
"@type": "ListItem",
position: 3,
name: nameExamp2,
item: "https://example2.com/",
},
{
"@type": "ListItem",
position: 4,
name: nameExamp3,
item: "https://example3.com/",
},
],
};
uj5u.com熱心網友回復:
如何回圈一個陣列但每隔一個專案
您可以使用常規的 for 回圈。
const splitBreadCrumbStructuredData = ["name1", "item1", "name2", "item2", "name3", "item3"];
var faqStructuredDataSplit = [];
for(let i = 0, p = 1; i < splitBreadCrumbStructuredData.length; i = 2){
faqStructuredDataSplit.push ({
"@type": "ListItem",
position: p ,
name: splitBreadCrumbStructuredData[i],
item: splitBreadCrumbStructuredData[i 1],
});
}
console.log(faqStructuredDataSplit);
兩個陣列同時
您不需要在 map 函式中回圈這兩個陣列。
var faqStructuredDataSplit = nameBreadCrumbStructuredData.map((data, index) => ({
"@type": "ListItem",
position: index 1,
name: data,
item: urlBreadCrumbStructuredData[index],
}));
完整的代碼片段
const splitBreadCrumbStructuredData = ["name1", "item1", "name2", "item2", "name3", "item3"];
var nameBreadCrumbStructuredData = splitBreadCrumbStructuredData.filter(
function (value, index, Arr) {
return index % 2 == 0;
}
);
var urlBreadCrumbStructuredData = splitBreadCrumbStructuredData.filter(
function (value, index, Arr) {
return index % 2 == 1;
}
);
var faqStructuredDataSplit = nameBreadCrumbStructuredData.map((data, index) => ({
"@type": "ListItem",
position: index 1,
name: data,
item: urlBreadCrumbStructuredData[index],
}));
console.log(faqStructuredDataSplit);
uj5u.com熱心網友回復:
如果我理解正確,你想變成這樣:
["name1","value1","name2", "value2"]
進入
[
{position: 1,name: "name1",item: "value1"},
{position: 2,name: "name2",item: "value2"}
]
這可以一次性完成,而無需創建 2 個單獨的陣列
const input = ["name1","value1","name2", "value2"];
const result = [];
for(let i=0,p=1; i<input.length;i =2,p ){
result.push( { position: p, name: input[i], item: input[i 1] } );
}
console.log(result);
你在你想要的結果周圍有更多的結構,這很好......只需將其添加到:
const input = ["name1","value1","name2", "value2"];
const breadCrumbStructuredData = {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement:[]
}
for(let i=0,p=1; i<input.length;i =2,p ){
breadCrumbStructuredData.itemListElement.push( { "@type":"ListItem", position: p, name: input[i], item: input[i 1] } );
}
console.log(breadCrumbStructuredData);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/362959.html
標籤:javascript 数组 循环 字典 foreach
上一篇:乘以2-Python
下一篇:回圈運行5次但只要求輸入2次
