首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在foreach迭代中移除this {},需要移除对象

如何在foreach迭代中移除this {},需要移除对象
EN

Stack Overflow用户
提问于 2020-02-06 08:32:22
回答 1查看 43关注 0票数 0

我想要循环iTunes json响应,但我需要构造这种精确的方式来使它在我的应用程序中工作。

代码语言:javascript
复制
{
  "title": "5 Podcast Found",
  "items": {
    "0": { // I WANT TO REMOVE THIS
      "KEY_1": {
        "synonyms": ["Number 1", "1- Mike Rowe"],
        "title": "1- Mike Rowe",
        "url": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/600x600bb.jpg",
        "image": {}
      } 
    }, // AND REMOVE THIS
    "1": {  // I WANT TO REMOVE THIS
      "KEY_2": {
        "synonyms": ["Number 2", "2- Mike."],
        "title": "2- Mike.",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/600x600bb.jpg",
        "image": {}
      }
    },  // AND REMOVE THIS
    "2": {  // I WANT TO REMOVE THIS
      "KEY_3": {
        "synonyms": ["Number 3", "3- Nike"],
        "title": "3- Nike",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/600x600bb.jpg",
        "image": {}
      }
    }  // AND REMOVE THIS
  }
}

最终结果必须是:

代码语言:javascript
复制
{
  "title": "5 Podcast Found",
  "items": {
      "KEY_1": {
        "synonyms": ["Number 1", "1- Mike Rowe"],
        "title": "1- Mike Rowe",
        "url": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/600x600bb.jpg",
        "image": {}
    }, 
      "KEY_2": {
        "synonyms": ["Number 2", "2- Mike."],
        "title": "2- Mike.",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/600x600bb.jpg",
        "image": {}
    }, 
      "KEY_3": {
        "synonyms": ["Number 3", "3- Nike"],
        "title": "3- Nike",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/600x600bb.jpg",
        "image": {}
    } 
  }
}

我的jsfiddle test

代码语言:javascript
复制
json = {
  "resultCount": 3,
  "results": [{
      "wrapperType": "track",
      "kind": "podcast",
      "collectionId": 1087110764,
      "trackId": 1087110764,
      "artistName": "Mike Rowe",
      "collectionName": "The Way I Heard It with Mike Rowe",
      "trackName": "The Way I Heard It with Mike Rowe",
      "collectionCensoredName": "The Way I Heard It with Mike Rowe",
      "trackCensoredName": "The Way I Heard It with Mike Rowe",
      "collectionViewUrl": "https://podcasts.apple.com/us/podcast/the-way-i-heard-it-with-mike-rowe/id1087110764?uo=4",
      "feedUrl": "http://thewayiheardit.rsvmedia.com/rss/",
      "trackViewUrl": "https://podcasts.apple.com/us/podcast/the-way-i-heard-it-with-mike-rowe/id1087110764?uo=4",
      "artworkUrl30": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/30x30bb.jpg",
      "artworkUrl60": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/60x60bb.jpg",
      "artworkUrl100": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/100x100bb.jpg",
      "collectionPrice": 0.00,
      "trackPrice": 0.00,
      "trackRentalPrice": 0,
      "collectionHdPrice": 0,
      "trackHdPrice": 0,
      "trackHdRentalPrice": 0,
      "releaseDate": "2020-01-21T13:00:00Z",
      "collectionExplicitness": "cleaned",
      "trackExplicitness": "cleaned",
      "trackCount": 148,
      "country": "USA",
      "currency": "USD",
      "primaryGenreName": "Society & Culture",
      "contentAdvisoryRating": "Clean",
      "artworkUrl600": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/600x600bb.jpg",
      "genreIds": ["1324", "26", "1487"],
      "genres": ["Society & Culture", "Podcasts", "History"]
    },
    {
      "wrapperType": "track",
      "kind": "podcast",
      "collectionId": 1380403010,
      "trackId": 1380403010,
      "artistName": "Mike.",
      "collectionName": "YNK: you know what I mean?",
      "trackName": "YNK: you know what I mean?",
      "collectionCensoredName": "YNK: you know what I mean?",
      "trackCensoredName": "YNK: you know what I mean?",
      "collectionViewUrl": "https://podcasts.apple.com/us/podcast/ynk-you-know-what-i-mean/id1380403010?uo=4",
      "feedUrl": "https://feeds.buzzsprout.com/175456.rss",
      "trackViewUrl": "https://podcasts.apple.com/us/podcast/ynk-you-know-what-i-mean/id1380403010?uo=4",
      "artworkUrl30": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/30x30bb.jpg",
      "artworkUrl60": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/60x60bb.jpg",
      "artworkUrl100": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/100x100bb.jpg",
      "collectionPrice": 0.00,
      "trackPrice": 0.00,
      "trackRentalPrice": 0,
      "collectionHdPrice": 0,
      "trackHdPrice": 0,
      "trackHdRentalPrice": 0,
      "releaseDate": "2020-01-29T07:00:00Z",
      "collectionExplicitness": "explicit",
      "trackExplicitness": "explicit",
      "trackCount": 31,
      "country": "USA",
      "currency": "USD",
      "primaryGenreName": "Society & Culture",
      "contentAdvisoryRating": "Explicit",
      "artworkUrl600": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/600x600bb.jpg",
      "genreIds": ["1324", "26", "1304", "1500"],
      "genres": ["Society & Culture", "Podcasts", "Education", "Self-Improvement"]
    },
    {
      "wrapperType": "track",
      "kind": "podcast",
      "artistId": 1441449614,
      "collectionId": 1414073313,
      "trackId": 1414073313,
      "artistName": "Nike",
      "collectionName": "TRAINED",
      "trackName": "TRAINED",
      "collectionCensoredName": "TRAINED",
      "trackCensoredName": "TRAINED",
      "artistViewUrl": "https://podcasts.apple.com/us/artist/nike/1441449614?uo=4",
      "collectionViewUrl": "https://podcasts.apple.com/us/podcast/trained/id1414073313?uo=4",
      "feedUrl": "https://feeds.simplecast.com/tDPL0T6c",
      "trackViewUrl": "https://podcasts.apple.com/us/podcast/trained/id1414073313?uo=4",
      "artworkUrl30": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/30x30bb.jpg",
      "artworkUrl60": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/60x60bb.jpg",
      "artworkUrl100": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/100x100bb.jpg",
      "collectionPrice": 0.00,
      "trackPrice": 0.00,
      "trackRentalPrice": 0,
      "collectionHdPrice": 0,
      "trackHdPrice": 0,
      "trackHdRentalPrice": 0,
      "releaseDate": "2020-01-30T10:00:00Z",
      "collectionExplicitness": "cleaned",
      "trackExplicitness": "cleaned",
      "trackCount": 33,
      "country": "USA",
      "currency": "USD",
      "primaryGenreName": "Society & Culture",
      "contentAdvisoryRating": "Clean",
      "artworkUrl600": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/600x600bb.jpg",
      "genreIds": ["1324", "26"],
      "genres": ["Society & Culture", "Podcasts"]
    }
  ]
}

var data = json.results;
var temp = 0;
var items = {};

function CreateList(data) {

  data.forEach(function(item, index) {
    
    var i = (temp + 1);
    var keyvalue = 'KEY_' + (temp + 1).toString();

    items[temp] = {
        [keyvalue]: {
          synonyms: [
            'Number ' + i,
            i + '- ' + item.artistName,
          ],
        title: (temp + 1) + '- ' + item.artistName,
        url: item.artworkUrl600,
        image: new Image({
          url: item.artworkUrl600,
          alt: item.artistName,
        }),
      }
    }
    temp = temp + 1;

  });

  return {
    title: '5 Podcast Found',
    items: items
  }

}

print( JSON.stringify( CreateList(data) ) );


function print(content) {
  var div = document.createElement('div');
  div.setAttribute('id', content);
  div.innerHTML = content;
  document.body.appendChild(div);
}

EN

回答 1

Stack Overflow用户

发布于 2020-02-06 08:35:14

获取items对象的Object.values,然后从每个对象中提取第一个键/值,并将其转换为新对象:

代码语言:javascript
复制
const obj = {
  "title": "5 Podcast Found",
  "items": {
    "0": { // I WANT TO REMOVE THIS
      "KEY_1": {
        "synonyms": ["Number 1", "1- Mike Rowe"],
        "title": "1- Mike Rowe",
        "url": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/600x600bb.jpg",
        "image": {}
      } 
    }, // AND REMOVE THIS
    "1": {  // I WANT TO REMOVE THIS
      "KEY_2": {
        "synonyms": ["Number 2", "2- Mike."],
        "title": "2- Mike.",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/600x600bb.jpg",
        "image": {}
      }
    },  // AND REMOVE THIS
    "2": {  // I WANT TO REMOVE THIS
      "KEY_3": {
        "synonyms": ["Number 3", "3- Nike"],
        "title": "3- Nike",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/600x600bb.jpg",
        "image": {}
      }
    }  // AND REMOVE THIS
  }
};

obj.items = Object.fromEntries(
  Object.values(obj.items).map(
    val => Object.entries(val)[0]
  )
);

console.log(obj);

或者,如果您不想使用Object.fromEntries

代码语言:javascript
复制
const obj = {
  "title": "5 Podcast Found",
  "items": {
    "0": { // I WANT TO REMOVE THIS
      "KEY_1": {
        "synonyms": ["Number 1", "1- Mike Rowe"],
        "title": "1- Mike Rowe",
        "url": "https://is2-ssl.mzstatic.com/image/thumb/Podcasts113/v4/02/0a/6f/020a6f39-a195-a7a7-e717-794a6541b129/mza_1066101368879806095.jpg/600x600bb.jpg",
        "image": {}
      } 
    }, // AND REMOVE THIS
    "1": {  // I WANT TO REMOVE THIS
      "KEY_2": {
        "synonyms": ["Number 2", "2- Mike."],
        "title": "2- Mike.",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/c1/72/68/c17268a6-30ab-7fc5-eb7d-f3e63960cb93/mza_6072772015110895299.jpg/600x600bb.jpg",
        "image": {}
      }
    },  // AND REMOVE THIS
    "2": {  // I WANT TO REMOVE THIS
      "KEY_3": {
        "synonyms": ["Number 3", "3- Nike"],
        "title": "3- Nike",
        "url": "https://is3-ssl.mzstatic.com/image/thumb/Podcasts123/v4/55/ee/c3/55eec394-d14e-7595-dede-387fb048b889/mza_5054714582624291511.jpg/600x600bb.jpg",
        "image": {}
      }
    }  // AND REMOVE THIS
  }
};

const newItems = {};
for (const innerObj of Object.values(obj.items)) {
  const [key, val] = Object.entries(innerObj)[0];
  newItems[key] = val;
}
obj.items = newItems;
console.log(obj);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60086087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档