【问题标题】:Same Array Different Results相同的数组不同的结果
【发布时间】:2019-04-02 03:30:23
【问题描述】:

脚本标签中的函数closest 查找最接近112 的数字。但是,当我在来自 ajax 请求的相同数组上使用相同的函数时,它会给出错误的结果。

控制台日志 1:本地 array 产生正确的结果 122

控制台日志 2:外部array2 显示与本地相同。

控制台日志 3:使用外部数组会导致左括号。从gist 中删除括号会导致8,这仍然不正确。

JSFiddle

function loadgist(gistid, filename)
{
    $.ajax({
        url: 'https://api.github.com/gists/' + gistid,
        type: 'GET',
        dataType: 'jsonp'
    }).success(function(gistdata) {
        var content = gistdata.data.files[filename].content;
        DoSomethingWith(content)
    }).error(function(e) {
        // ajax error
    });        
}

function DoSomethingWith(content)
{
    number = 112;
    var array2 = (content);
    console.log(content);
    console.log(closest(number, array2));
}

loadgist("9544dfd755418e819810312488e7986c", "gistfile1.txt");
<script src=https://code.jquery.com/jquery-1.9.1.js></script>
<script language="javascript">

function closest(num, arr)
{
    var curr = arr[0];
    var diff = Math.abs (num - curr);

    for (var val = 0; val < arr.length; val++)
    {
        var newdiff = Math.abs (num - arr[val]);

        if (newdiff < diff)
        {
            diff = newdiff;
            curr = arr[val];
        }
    }

    return curr;
}

array = [2, 42, 82, 122, 162, 202, 242, 282, 322, 362];
number = 112;
console.log(closest (number, array));

</script>

【问题讨论】:

标签: javascript arrays ajax gist


【解决方案1】:

如果您在方法DoSomethingWith(...) 中添加console.log(typeof content),您会注意到内容不是array,而是string。所以用JSON.parse()string得到一个array,像这样:

function DoSomethingWith(content)
{
    let number = 112;
    let array2 = JSON.parse(content);
    console.log(content);
    console.log(closest(number, array2));
}

【讨论】:

  • 如果你有时间,你会推荐什么其他的表达方式,这些表达方式和'type of'一样有用,用于调试目的。只是一个观察,但在浏览器的开发人员工具中,第一个控制台日志用颜色评估条目,其他条目是黑色的。字符串评估为黑色吗?非常感谢,非常感谢 Shidersz。
  • @DerekM 抱歉,但对于调试,我现在没有想到其他的。至于用于在开发者控制台上显示数据的样式,我认为它可能取决于浏览器。就个人而言,我不会假设没有任何普遍性。
猜你喜欢
  • 2019-06-15
  • 2013-05-29
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多