Как удалить это {} в итерации foreach, нужно удалить объект - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу l oop iTunes json ответ, но мне нужно построить c этот точный способ заставить его работать в моем приложении.

{
  "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
  }
}

Конечный результат должен быть следующим:

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

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

1 Ответ

2 голосов
/ 06 февраля 2020

Возьмите Object.values объекта items, затем извлеките первый ключ / значение из каждого и превратите его в новый объект:

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:

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);
...