在 .slice 之后重置 JSON 数组

Reset a JSON array after .slice

本文关键字:JSON 数组 slice 之后      更新时间:2023-09-26

我正在创建一个随机的餐馆生成器。我有一个PHP请求,它获取数据库中的位置,然后我将它们转换为json数组。

然后我有一个jquery函数,用.slice随机显示餐厅,以删除我刚刚去过的地方。

$(document).ready(function() {
 // The "restos" var equals to my full json            
 var restos = <? echo $restos; ?>;
 function getRandomResto(){
        var randomKey = Math.floor(Math.random()*restos.length);
        var resto = restos[randomKey];
        restos.splice(randomKey, 1);
        var title = resto.title;
       //Add content
       $('#place').html('<h2>' + title + '</h2>');
    }
)};

这是简短的版本。

我想做的是,当我的数组为空时,重新加载它以重新启动我的餐厅的随机显示。

我试图再次调用我的 json var,但在函数中当 restos.length 等于 0 时,但这似乎不是好的解决方案......

任何帮助都非常感谢!

你应该每次都克隆restos,就像这样:

 var restos = <? echo $restos; ?>;
 var currentRestos = restos.slice(0); // this clones an array
 function getRandomResto(){
       if (currentRestos.length == 0) {
         currentRestos = restos.slice(0);
       }
        var randomKey = Math.floor(Math.random()*currentRestos.length);
        var resto = currentRestos[randomKey];
        currentRestos.splice(randomKey, 1);
        var title = resto.title;
       //Add content
       $('#place').html('<h2>' + title + '</h2>');
    }
)};