簡體   English   中英

同一數組不同結果

[英]Same Array Different Results

腳本標簽中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> 

如果在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));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM