我尝试了几种使用不同列表原语的方法,但找不到测试列表中每个项目的不等式的方法。例如,我的列表[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);
}
});
。有人可以帮助完成这个简单的任务。
答案 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-value
与ifelse
类似,不同之处在于它返回运行的块中的值。
如果,你只是想摆脱列表中不平等的所有项目,你可以使用filter
filter [ ? < 0 ] my-list
map
和filter
是非常强大的记者,但他们可能需要一段时间才能掌握。但是,如果您需要对列表执行某些操作,则可以使用map
,filter
或(在更极端的情况下)reduce
来执行此操作。