我想了解从另一个数组的所有元素中过滤一个数组的最佳方法。我尝试了过滤功能,但它不来我如何给它的值,我想删除。喜欢的东西:

var array = [1,2,3,4];
var anotherOne = [2,4];
var filteredArray = array.filter(myCallback);
// filteredArray should now be [1,3]


function myCallBack(){
    return element ! filteredArray; 
    //which clearly can't work since we don't have the reference <,< 
}

如果过滤器函数没有用处,您将如何实现它? 编辑:我检查了可能的重复问题,这可能对那些容易理解javascript的人有用。如果答案勾选“好”,事情就简单多了。

这是我一开始的资料。

我的清单

L = [0, 23, 234, 89, None, 0, 35, 9]

当我运行这个:

L = filter(None, L)

我得到了这个结果

[23, 234, 89, 35, 9]

但这不是我需要的,我真正需要的是:

[0, 23, 234, 89, 0, 35, 9]

因为我计算的是数据的百分位数0有很大的不同。

如何从列表中删除无值而不删除0值?

有时候你想用多个条件过滤一个流:

myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) ...

或者你也可以用一个复杂的条件和一个过滤器做同样的事情:

myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) ...

我猜测第二种方法具有更好的性能特征,但我不确定。

第一种方法在可读性方面更胜一筹,但是哪种方法对性能更好呢?

filter, map和reduce在python2中完美地工作。这里有一个例子:

>>> def f(x):
        return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]

>>> def cube(x):
        return x*x*x
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

>>> def add(x,y):
        return x+y
>>> reduce(add, range(1, 11))
55

但在Python 3中,我收到以下输出:

>>> filter(f, range(2, 25))
<filter object at 0x0000000002C14908>

>>> map(cube, range(1, 11))
<map object at 0x0000000002C82B70>

>>> reduce(add, range(1, 11))
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    reduce(add, range(1, 11))
NameError: name 'reduce' is not defined

如果有人能给我解释一下这是为什么,我会很感激。

为进一步清晰起见,代码截图如下:

在html下实现文件上传是相当简单的,但我刚刚注意到有一个'accept'属性,可以添加到<input type="file"…>标签。

这个属性在限制文件上传为图像等方面有用吗?使用它的最佳方式是什么?

或者,是否有一种方法来限制html文件输入标记的文件类型,最好是在文件对话框中?

当我需要过滤data.frame时,即提取满足特定条件的行,我更喜欢使用子集函数:

subset(airquality, Month == 8 & Temp > 90)

而不是[函数:

airquality[airquality$Month == 8 & airquality$Temp > 90, ]

我的选择主要有两个原因:

我发现代码从左到右读起来更好。即使对R一无所知的人也能看出上面的子集语句在做什么。 因为列可以在选择表达式中被引用为变量,所以我可以节省一些按键。在我上面的例子中,我只需要用子集输入一次airquality,但是用[输入了三次。

所以我生活得很快乐,到处都使用子集,因为它更短,更好读,甚至向我的R程序员同事宣扬它的美丽。但是昨天我的世界崩溃了。在阅读子集文档时,我注意到这一部分:

警告 这是一个方便交互使用的功能。对于编程来说,最好使用像[这样的标准子集函数,特别是参数子集的非标准求值可能会产生意想不到的结果。

有人能帮我解释一下作者的意思吗?

首先,他们所说的“交互使用”是什么意思?我知道什么是交互式会话,而不是在BATCH模式下运行的脚本,但我不知道它应该有什么不同。

那么,你能不能解释一下“参数子集的非标准求值”,为什么它是危险的,或者举个例子?

假设我有一个对象:

{
  item1: { key: 'sdfd', value:'sdfd' },
  item2: { key: 'sdfd', value:'sdfd' },
  item3: { key: 'sdfd', value:'sdfd' }
}

我想通过过滤上面的对象来创建另一个对象这样我就有了。

 {
    item1: { key: 'sdfd', value:'sdfd' },
    item3: { key: 'sdfd', value:'sdfd' }
 }

我正在寻找一种干净的方法来实现这一点使用Es6,所以扩散操作符是可用的。

我有first_name, last_name和别名(可选),我需要搜索。因此,我需要一个查询来给我所有有别名集的名称。

只要我能做到:

Name.objects.filter(alias!="")

那么,与上面的等价的是什么呢?

我想根据谓词筛选java.util.Collection。

我想删除这个数据帧中的行:

a)在所有列中包含NAs。下面是我的示例数据帧。

             gene hsap mmul mmus rnor cfam
1 ENSG00000208234    0   NA   NA   NA   NA
2 ENSG00000199674    0   2    2    2    2
3 ENSG00000221622    0   NA   NA   NA   NA
4 ENSG00000207604    0   NA   NA   1    2
5 ENSG00000207431    0   NA   NA   NA   NA
6 ENSG00000221312    0   1    2    3    2

基本上,我想获得如下所示的数据帧。

             gene hsap mmul mmus rnor cfam
2 ENSG00000199674    0   2    2    2    2
6 ENSG00000221312    0   1    2    3    2

b)只在某些列中包含NAs,所以我也可以得到这个结果:

             gene hsap mmul mmus rnor cfam
2 ENSG00000199674    0   2    2    2    2
4 ENSG00000207604    0   NA   NA   1    2
6 ENSG00000221312    0   1    2    3    2