Javascript 如何使用下划线';s_uq函数帮助记录偶数和奇数?

Javascript 如何使用下划线';s_uq函数帮助记录偶数和奇数?,javascript,arrays,sorting,underscore.js,unique,Javascript,Arrays,Sorting,Underscore.js,Unique,我对JavaScript非常陌生,但到目前为止,这就是我所拥有的。我试着用下划线将它打印到控制台上,分为两批唯一的偶数和奇数,我想我大概有90%是这样的,但我碰到了一堵墙 var arr = ([1,3,5,2,0,4,5,2,9,9,8,2]); sort(arr); function sort(arr) { var evens = []; var odds = []; for(var i = 0; i < ar

我对JavaScript非常陌生,但到目前为止,这就是我所拥有的。我试着用下划线将它打印到控制台上,分为两批唯一的偶数和奇数,我想我大概有90%是这样的,但我碰到了一堵墙

var arr = ([1,3,5,2,0,4,5,2,9,9,8,2]);            
sort(arr);

function sort(arr) {

var evens = [];
var odds = [];                        
for(var i = 0; i < arr.length; i++) {            
    if(arr[i] % 2 ){            
        odds.push(arr[i]);            
    } else if(!(arr[i] % 2)) {            
        evens.push(arr[i]);            
}            
}            

console.log("ODD NUMBERS:" + " " + odds);            
console.log("EVEN NUMBERS:" + " " + evens);            
if(_.uniq(evens).length != evens.length || _.uniq(odds).length != odds.length){            
console.log("FAIL!");            
}             
}
var arr=([1,3,5,2,0,4,5,2,9,9,8,2]);
排序(arr);
函数排序(arr){
var evens=[];
var赔率=[];
对于(var i=0;i
arr[i]%2
条件下计算为
0
,或
false

if (arr[i] % 2 === 0) { 
  // even
} else {
  // not even
}    

arr[i]%2
计算值为
0
,或
false
if
条件下

if (arr[i] % 2 === 0) { 
  // even
} else {
  // not even
}    

不确定我是否正确理解了您的要求,但以下是如何使用ES6实现这一点

在大多数浏览器中都得到广泛支持,并允许以更具声明性的方式解析数组

const arr=[1,3,5,2,0,4,5,2,9,9,8,2];
常数isEven=el=>el%2==0;
常数isOdd=el=>el%2!==0;
常数evens=arr.filter(isEven);
常数比数=arr.filter(isOdd);
log(`Unique evens:${{uq.uniq(evens)}`);//=>“唯一事件:2,0,4,8”

log(`Unique赔率:${{uq.uniq(赔率)}`);//“独特几率:1,3,5,9”
不确定我是否正确满足了您的要求,但以下是使用ES6的方法

在大多数浏览器中都得到广泛支持,并允许以更具声明性的方式解析数组

const arr=[1,3,5,2,0,4,5,2,9,9,8,2];
常数isEven=el=>el%2==0;
常数isOdd=el=>el%2!==0;
常数evens=arr.filter(isEven);
常数比数=arr.filter(isOdd);
log(`Unique evens:${{uq.uniq(evens)}`);//=>“唯一事件:2,0,4,8”

log(`Unique赔率:${{uq.uniq(赔率)}`);//“唯一赔率:1,3,5,9”
第一个问题:
参考错误:\未定义。

确保html文件中有一个
,或者JS文件中需要下划线

第二个问题:“我希望没有错误,两个列表都以唯一值打印到控制台。”
这不会发生,因为您尚未调用数组上的
uniq
函数。只需将这两个数组用
\uuq.uniq()
包装,如下所示:

console.log("ODD NUMBERS:", _.uniq(odds));
console.log("EVEN NUMBERS:", _.uniq(evens));
或者,您可以在对输入数组进行排序之前调用
\ uq.uniq
,从而节省排序时的处理时间


无论哪种方式,假设定义了下划线,您应该会得到预期的结果。

第一个问题:
引用错误:\未定义。

确保html文件中有一个
,或者JS文件中需要下划线

第二个问题:“我希望没有错误,两个列表都以唯一值打印到控制台。”
这不会发生,因为您尚未调用数组上的
uniq
函数。只需将这两个数组用
\uuq.uniq()
包装,如下所示:

console.log("ODD NUMBERS:", _.uniq(odds));
console.log("EVEN NUMBERS:", _.uniq(evens));
或者,您可以在对输入数组进行排序之前调用
\ uq.uniq
,从而节省排序时的处理时间


无论哪种方式,假设定义了下划线,您都应该得到预期的结果。

首先需要过滤数组(偶数或奇数),然后应用q.uniq

var arr=[1,3,5,2,0,4,5,2,9,9,8,2];
var evens=u2;.filter(arr,函数(num){returnnum%2==0;});
var赔率=389;.filter(arr,函数(num){returnnum%2!=0;});
log(“偶数:+q.uniq(evens));
log(“奇数:+q.uniq(赔率))

首先需要过滤数组(偶数或奇数),然后应用q.uniq

var arr=[1,3,5,2,0,4,5,2,9,9,8,2];
var evens=u2;.filter(arr,函数(num){returnnum%2==0;});
var赔率=389;.filter(arr,函数(num){returnnum%2!=0;});
log(“偶数:+q.uniq(evens));
log(“奇数:+q.uniq(赔率))

你撞的墙到底是什么?每次都应该看到“FAIL!”,因为输入数组有重复项(偶数和奇数),所以
uniq
长度永远不会与排序后的长度相同。您看到了什么?您希望看到什么?嗨,Scott-我正在将两个列表打印到控制台,日志中包含所有偶数或奇数,此外还有一个错误(使用代码板),告诉我ReferenceError:u未定义。我希望没有错误,并且两个列表都以唯一值打印到控制台。该错误意味着未加载下划线。我已经有一段时间没有使用代码板了,但我相信有一种方法可以包含库。在JSFIDLE中,它位于左侧。一旦找到它,您将需要为下划线添加一个url,如下所示:另外,在调用
\uuq.uniq
方法之前要打印数组。您需要将
赔率
偶数
包装在
\uuq.uniq()
中,以从完整数组中获取唯一数组。谢谢!你帮了大忙,但还有一件事——正如我说的,我是个新手,我不太清楚你在uniq中包装偶数和赔率是什么意思。你愿意给我举个例子吗?你要撞的墙到底是什么?每次都应该看到“FAIL!”,因为输入数组有重复项(偶数和奇数),所以
uniq
长度永远不会与排序后的长度相同。你看到了什么?你期望看到什么?嗨,斯科特-我正在把这两个列表打印到控制台上