JSFiddle - React, Tailwind, and code Playground

Papa Parse Scryfall Card Prices

by skibulk

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.2.0/papaparse.min.js"></script>
<input id="browse" type="file"/><br>

JavaScript

// Browse Button
var browse = document.getElementById("browse");
var results = [];
var results2 = [];
var excludeSets = ["por", "p02", "ptk", "ppod"];

// Handle file selection
browse.onchange = function(event) {
		console.clear();

    var file, fr, i, j;
    file = browse.files[0];
    fr = new FileReader();
    fr.onload = receivedText;
    fr.readAsText(file);

    function receivedText(e) {
    
      let lines = e.target.result;
      var cards = JSON.parse(lines);
      console.log(cards);
      
      for(i=0; i<cards.length; i++){
      	// Skip Foreign
        if(cards[i].lang != "en") continue;
        
      	// Skip Commons
        if(cards[i].rarity == "common") continue;
        
        // Skip Old Cards
        if(cards[i].released_at.slice(0,4) < 1995) continue;
        
        // Skip special sets
        if(excludeSets.includes(cards[i].set.toLowerCase())) continue;
        
      	// Skip Promos
        if(cards[i].promo == true) continue;
        
        // Skip Tokens
        if(cards[i].type_line.indexOf("Token") == 0) continue;
        
        // Skip gold borders
        if(cards[i].border_color != "black") continue;
        
        // Skip Extended Art
        if(cards[i].frame_effects && cards[i].frame_effects.includes("extendedart")) continue;
        
      	var card_name = cards[i].name;
        
        if(!results[card_name]){
        	results[card_name] = [];
        }
        
      	results[card_name].push([
        	cards[i].set,
        	cards[i].prices.usd,
          cards[i],
        ]);
      }
      
      console.log(results);
      
      for(var name in results){
      	
        // Skip Cards with only one printing (after 1995)
      	if(results[name].length == 1) continue;
        
	      sortNestedDesc(results[name], 1);
        
        var low = Infinity;
        var high=0;
        
	      for(i=0; i<results[name].length; i++){
        
        	var card = results[name][i];
          if(card[1] > 0){
         ...