Как собрать массивы, содержащие только указанный ключ в вызове JavaScript AJAX? - PullRequest
0 голосов
/ 07 сентября 2018

Я смотрю везде и не могу найти ответ на этот вопрос.

Можно ли указать вызов AJAX для возврата только с массивами, равными предоставленному ключу?

Я сделал простой рандомизатор, и он отлично работает при общем поиске, но при фильтрации поиска может потребоваться горячая минута, чтобы вернуть результат, потому что я настроил его на прохождение теста, равного переменной ' запрос. Если он не проходит, функция запускается снова, пока не вернётся случайный массив, равный запросу var.

Естественно, я бы хотел ускорить процесс. Кто-нибудь может дать рекомендации? Я уверен, что это что-то простое и заранее извиниться.

Рабочую демонстрацию вы можете увидеть здесь: https://codepen.io/ohBretterson/pen/eLBPbQ?editors=0010

Я предполагаю, что должен манипулировать своим объектом данных после успеха:

function getTreasure() {
  $.ajax({
    url: "https://codepen.io/ohBretterson/pen/QVGRwG.js",
    async: true,
    success: function(csvd) {
      data = $.csv.toArrays(csvd);
    },
    dataType: "text",
    complete: function() {

      let i = Math.floor(Math.random() * data.length);
      let type = data[i][5];
      let rarity = data[i][3];
      let item = data[i][0];
      let desc = data[i][1];
      let req = data[i][6];
      let req2 = data[i][7];

      //       Filter query
      if (query === undefined) {
      } else if (rarity !== query && type !== query) {
        return getTreasure();
      }  

      $(".controls").fadeIn("slow");

      let content = `
<div class='type fade-in'>${type}</div>
<div class='rarity'>${rarity}</div>
<div class="cardContainer">
<p class='itemName fade-in'>${item}</p>
<div class="cardContents fade-in">
<div class="description">${desc}</div>
<hr>
<div class='requirement'>${req}<br>${req2}</div>

</div>
</div>
<div class='coin fade-in'><p class="est-value">est.value</p>${data[i][2]}</div>
<div class='weight fade-in'><p class="weight-value">weight</p>${
      data[i][4]
      }</div>
<div class='author fade-in'>${data[i][8]}</div>

<svg stroke='#000000' stroke-width='1' stroke-miterlimit='10' class='path' id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 257 368.51"><title>thing</title><circle class="circleStroke" cx="32.3" cy="338.56" r="21.2" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="weightStroke" d="M750.58,363.36l-6.05-24.19A2.7,2.7,0,0,0,742,337h-5a7.94,7.94,0,1,0-15.42-2.65,7.74,7.74,0,0,0,.49,2.65h-5a2.71,2.71,0,0,0-2.56,2.14l-6,24.19a4.28,4.28,0,0,0,3.84,5.48h34.45C749.37,368.84,751.27,366.12,750.58,363.36Zm-21.06-26.92a2.95,2.95,0,1,1,3-2.94A2.94,2.94,0,0,1,729.52,336.44Z" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="innerStroke" d="M521.88,34.31h.33v-.37a9.85,9.85,0,0,1,9.84-9.84H750.3a9.85,9.85,0,0,1,9.85,9.84V366.06a9.85,9.85,0,0,1-9.85,9.84H563.22a29,29,0,1,0-41-41V62.58" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="innerStroke" d="M514.36,62.58V361.22a22.53,22.53,0,0,0,22.53,22.53H745.46A22.53,22.53,0,0,0,768,361.22V38.78a22.53,22.53,0,0,0-22.54-22.53H536.89A22.54,22.54,0,0,0,514.8,34.31" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/><path class="ribbonStroke" d="M670.63,62.58H513.28A1.28,1.28,0,0,1,512,61.29V35.6a1.29,1.29,0,0,1,1.29-1.29H670.63l-7.86,14.13Z" transform="translate(-511.5 -15.75)" style="fill:none;stroke:#000;stroke-miterlimit:10"/></svg>
`;

      $("#card").html(content)
      $(".fade-in")
        .animate("slow")
        .css("opacity", "1");
      $("hr").css("width", "60%");

      if (type === "Book"){
        $("body").removeClass().addClass('book', 1000);
      } else if (type === "Potion"){
       $("body").removeClass().addClass('potion', 1000); 
      } else if (type === "Armor"){
       $("body").removeClass().addClass('armor', 1000); 
      } else if (type === "Adventuring Gear"){
       $("body").removeClass().addClass('gear', 1000); 
      } else if (type === "Quest Hook"){
       $("body").removeClass().addClass('quest', 1000); 
      } else if (type === "Ring"){
       $("body").removeClass().addClass('ring', 1000); 
      } else if (type === "Treasure"){
       $("body").removeClass().addClass('treasure', 1000); 
      } else if (type === "Weapon"){
       $("body").removeClass().addClass('weapon', 1000); 
      } else if (type === "Wondrous Item"){
       $("body").removeClass().addClass('wondrous-item', 1000); 
      } else $("body").removeClass();

    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...