相同阵列不同的结果

问题描述 投票:1回答:1

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

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

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

控制台日志3:使用外部阵列会产生左括号。从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>
console.log(typeof content)
javascript arrays ajax gist
1个回答
4
投票

如果你在方法DoSomethingWith(...)中添加array,你会注意到内容不是string,而是JSON.parse()。所以使用arraystring获得function DoSomethingWith(content) { let number = 112; let array2 = JSON.parse(content); console.log(content); console.log(closest(number, array2)); } ,如下所示:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.