繁体   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