2014-09-04 43 views
0

我希望我不重复现有的问题,我已经很努力地在网站上找到我需要的东西,但现在觉得我需要问这个问题,所以在这里,我希望你们能帮助我:sjQuery脚本不能与预先填充的数组一起工作

我有一个数组;

var 1Results = somecontent; 
var 2Results = somecontent; 
var 3Results = somecontent; 
var 4Results = somecontent; 

var nomResults = 1Results + 2Results + 3Results + 4Results; 

我是应该剔除掉重复的号码并显示出来(在sorted_arr)的脚本;

var arr = nomResults; 
    var sorted_arr = arr.sort(); // You can define the comparing function here. 
           // JS by default uses a crappy string compare. 
    var results = []; 
    for (var i = 0; i < arr.length - 1; i++) { 
     if (sorted_arr[i + 1] == sorted_arr[i]) { 
      results.push(sorted_arr[i]); 
     } 
    } 

此脚本不起作用,但是我将脚本更改为此;

var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7]; 
    var sorted_arr = arr.sort(); // You can define the comparing function here. 
           // JS by default uses a crappy string compare. 
    var results = []; 
    for (var i = 0; i < arr.length - 1; i++) { 
     if (sorted_arr[i + 1] == sorted_arr[i]) { 
      results.push(sorted_arr[i]); 
     } 
    } 

它工作正常,任何想法,为什么的.sort()不会与我的前popluated阵列工作?

任何帮助将不胜感激。

+8

'var nomResults = 1Results + 2Results + 3Results + 4Results;'不是数组,1Results不是有效的JavaScript标识符。它甚至不应该解析。你的意思是使用'var nomResults = [Results1,Results2,...]'? – 2014-09-04 16:19:16

+0

对不起,只是编辑代码以反映其他数组 – Takuhii 2014-09-04 16:21:18

+3

代码仍显示'nomResults'只是其他变量的串联。它仍然不是一个数组。这只是一个单一的价值,所以没有什么可以“排序”。你的'var arr'是一个数组(方括号内有多个以逗号分隔的值),所以它可以排序。 – mc01 2014-09-04 16:26:08

回答

1

你必须使用括号符号将元素添加到喜欢你的新阵:

var arr = [Results1, Results2...]; 

或者Array.prototype.push()

​​

另外,你可以ü瑟特定功能进行排序,无论是宣布一个新的功能比较:

function compare(a, b) { 
    return a - b; 
} 

将使用你的数组的实际值(而不是字符串,如您的评论指定)。 然后你通过它进行排序:

arr = arr.sort(compare); 

或者直接使用匿名函数,如果你不需要它超过一次:

0

我可以在代码中看到两个问题。

  1. 变量名称不能以数字开头
  2. VAR nomResults不是一个数组而是一个字符串

下面的代码对我的作品只是细

var results1 = "this", results2="is", results3="an", results4="array", theArray = [results1, results2, results3, results4];

console.log(theArray);

[ “此”, “是”, “一个”, “阵列”]

console.log(theArray.sort());

[ “一个”, “阵列”, “是”, “这个”]

0

我建设我的数组错!谢谢你,我知道这将是简单的:)

而不是这个;

var nomResults = 1Results + 2Results + 3Results + 4Results; 

我需要这样做;

var nomResults = [Results1, Results2, Results3, Results4]; 

我一直在看这个这么长时间,我没有看到它。我的脚本现在都在工作,很棒,错误都消失了,这真是太棒了。很多道具和感谢@jpreynat非常感谢你:)我需要一个假期......