簡體   English   中英

將 object 轉換為數組 object 但按鍵名字符數減少

[英]Convert object into array object but reduce down by key name character number

我有這個 object:

{
mainTitle: "xx",
press1: {text: "xx", linkUrl: "xx", linkText: "xx"}
press1imgs: [{…}, {…}]
press2: {text: "xx", linkUrl: "xx", linkText: "xx"}
press2imgs: [{…}, {…}]
press3: {text: "xx", linkUrl: "xx", linkText: "xx"}
press3imgs: [{…}, {…}]
press4: {text: "xx", linkUrl: "xx", linkText: "xx"}
press4imgs: [{…}, {…}]
press5: {text: "xx", linkUrl: "xx", linkText: "xx"}
press5imgs: [{…}, {…}]
press6: {text: "xx", linkUrl: "xx", linkText: "xx"}
press6imgs: [{…}, {…}]
}

我想將它縮減為一個數組,但將所有press1, press1imgs, press2, press2Imgs放在同一個索引中。 如果按下后的數字相同,則放入同一個索引中,這樣一共有6個索引,如下:

[
{text: "xx", linkUrl: "xx", linkText: "xx", img: [{…}, {…}]},
{text: "xx", linkUrl: "xx", linkText: "xx", img: [{…}, {…}]},
{text: "xx", linkUrl: "xx", linkText: "xx", img: [{…}, {…}]},
{text: "xx", linkUrl: "xx", linkText: "xx", img: [{…}, {…}]},
{text: "xx", linkUrl: "xx", linkText: "xx", img: [{…}, {…}]},
{text: "xx", linkUrl: "xx", linkText: "xx", img: [{…}, {…}]},
]

我能夠將 object 轉換為數組並從pressx獲取數字,但隨后我迷失了如何繼續使用減少、過濾、map? 我的嘗試:

 const mapped = Object.keys(this.content).map((key) => ({
    key: key,
    value: this.content[key],
  }));

  console.log(mapped);
  mapped.map((item) => {
    console.log(item.key.charAt(5));
    if (item.key.charAt(5)){

    }
  });

因為鍵是非常動態的,所以我懷疑數組方法在這里是否是一個不錯的選擇。 我會使用一個循環:

const input = this.content;
const results = [];
let i = 1;
while (input.hasOwnProperty('press' + i)) {
  results.push({
    ...input['press' + i],
    img: input['press' + i + 'imgs'],
  });
  i++;
}

實時片段:

 const input = { mainTitle: "xx", press1: {text: "xx", linkUrl: "xx", linkText: "xx"}, press1imgs: [{}, {}], press2: {text: "xx", linkUrl: "xx", linkText: "xx"}, press2imgs: [{}, {}], press3: {text: "xx", linkUrl: "xx", linkText: "xx"}, press3imgs: [{}, {}], press4: {text: "xx", linkUrl: "xx", linkText: "xx"}, press4imgs: [{}, {}], press5: {text: "xx", linkUrl: "xx", linkText: "xx"}, press5imgs: [{}, {}], press6: {text: "xx", linkUrl: "xx", linkText: "xx"}, press6imgs: [{}, {}] } const results = []; let i = 1; while (input.hasOwnProperty('press' + i)) { results.push({...input['press' + i], img: input['press' + i + 'imgs'], }); i++; } console.log(results);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM