需要直播搜索JSON文件

时间:2018-03-03 20:11:35

标签: javascript jquery

我在谷歌搜索了过去2个小时,并且使用了所有类型的代码,甚至尝试过XML php(结果证明速度很慢)。我还没有找到解决办法!

这就是我想要的: 我需要使用jQuery或javascript搜索此JSON文件https://s2.coinmarketcap.com/generated/search/quick_search.json,以最快者为准。我想搜索" name"和"符号"用我指定的字符串。

搜索时,总共会有5个结果记录到控制台中。当它登录到控制台时,它必须告诉我" name"和"排名"结果的价值。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

基于您已经能够获取数据的假设(quickSearchResults),解析函数将如下所示:

function findElementInData(dataPoints, nameOrSymbol) {
    return dataPoints.filter(point => point.name == nameOrSymbol || point.symbol === nameOrSymbol)
                     .map(point => {
                         return { name: point.name, rank: point.rank }
                      });
}
var elementsByName = findElementInData(quickSearchResults, 'Bitcoin');
console.log(elementsByName); // [{name: "Bitcoin", rank: 1} ]
var elementsBySymbol = findElementInData(quickSearchResults, 'BTC');
console.log(elementsBySymbol); // [{name: "Bitcoin", rank: 1} ] 

这将为您提供与给定数据数组传递的名称或符号匹配的所有元素。

更新:您似乎无法访问数据。这是一个完整的例子:

function findElementInData(dataPoints, nameOrSymbol) {
    return dataPoints.filter(point => point.name === nameOrSymbol || point.symbol === nameOrSymbol)
                .map(point => {
                    return { name: point.name, rank: point.rank }
                });
    }

function getData(dataUrl) {
    return fetch(dataUrl)
    .then(res => res.json())
}

window.addEventListener('load', () => {
    getData('https://s2.coinmarketcap.com/generated/search/quick_search.json')
    .then(dataPoints => {
        console.log(dataPoints);
        let myResultsBTC = findElementInData(dataPoints, 'BTC');
        let myResultsBitcoin = findElementInData(dataPoints, 'Bitcoin');
        let myResultsEtherum = findElementInData(dataPoints, 'Ethereum');
        let myResultsETH = findElementInData(dataPoints, 'ETH');
        console.log(myResultsBTC);       // {name: "Bitcoin", rank: 1}
        console.log(myResultsBitcoin);  // {name: "Bitcoin", rank: 1}
        console.log(myResultsEtherum);  // {name: "Ethereum", rank: 2}
        console.log(myResultsETH);      // {name: "Ethereum", rank: 2}
    })
    .catch(err => {
        console.error(err);
    });
});

答案 1 :(得分:0)

是的,如果您使用PHP,我会这样做:

  1. 使用file_get_contentsjson_decode将JSON文件加载到变量中。
  2. 使用简单的foreach循环迭代变量。
  3. 使用strpos检查其中一个密钥是否包含我正在搜索的值。
  4. 您可以创建另一个数组或对象,并将成功搜索的项目转储到其中。

    这会很快。