测试列表中的不等式

时间:2015-10-13 14:26:27

标签: netlogo

我尝试了几种使用不同列表原语的方法,但找不到测试列表中每个项目的不等式的方法。例如,我的列表[1 2 0 0 ]可以针对>进行测试0,并给//List array FriendID and Type var friendArray=[]; $('.active').each(function(i, obj) { friendID = $(this).siblings('span:first').data('type'); console.log(friendID); //#1 friendType = $(this).data('type'); friendStr = toString(friendID).concat(friendType); console.log(friendStr); //#2 //Loop through & Add if(friendArray.indexOf(friendStr) == -1) { friendArray.push(friendStr); } }); 。有人可以帮助完成这个简单的任务。

1 个答案:

答案 0 :(得分:2)

根据您想要的结果,有几种方法可以做到这一点。例如,你可以这样做:

map [ ifelse-value (? > 0) [ ? ] [ 0 ] ] my-list

map通过将给定的报告者任务应用于给定列表的每个项目来创建新列表。如果您之前未在NetLogo中使用过tasks,则?表示该任务的参数。所以,在这种情况下做:

map [ ifelse-value (? > 0) [ ? ] [ 0 ] ] [1 2 -1 -2]

基本上是这样的:

(list ifelse-value (1 > 0) [ 1 ] [ 0 ]
      ifelse-value (2 > 0) [ 2 ] [ 0 ]
      ifelse-value (-1 > 0) [ -1 ] [ 0 ]
      ifelse-value (-2 > 0) [ -2 ] [ 0 ])

ifelse-valueifelse类似,不同之处在于它返回运行的块中的值。

如果,你只是想摆脱列表中不平等的所有项目,你可以使用filter

filter [ ? < 0 ] my-list

mapfilter是非常强大的记者,但他们可能需要一段时间才能掌握。但是,如果您需要对列表执行某些操作,则可以使用mapfilter或(在更极端的情况下)reduce来执行此操作。