简体   繁体   English

将 object 转换为数组 object 但按键名字符数减少

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

I have this object:我有这个 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: [{…}, {…}]
}

I'd like to reduce it down to an array but put all the press1, press1imgs, press2, press2Imgs in the same index.我想将它缩减为一个数组,但将所有press1, press1imgs, press2, press2Imgs放在同一个索引中。 If the number after press is the same, put into the same index, so in total there'll be 6 indexes, to be like this:如果按下后的数字相同,则放入同一个索引中,这样一共有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: [{…}, {…}]},
]

I was able to convert the object into an array and get the number from pressx , but then I get lost into how to proceed, with reduce, filter, map?我能够将 object 转换为数组并从pressx获取数字,但随后我迷失了如何继续使用减少、过滤、map? My attempt:我的尝试:

 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)){

    }
  });

Because the keys are pretty dynamic, I'm doubtful that the array methods are a good choice here.因为键是非常动态的,所以我怀疑数组方法在这里是否是一个不错的选择。 I'd use a loop:我会使用一个循环:

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++;
}

Live snippet:实时片段:

 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