我试图处理netlogo中的列表列表。简而言之,我正在研究一种多物种植物扩散模型。每个物种都有几个参数,其值可以在模拟过程中改变。我正在尝试编写一个记者,它将遍历列表列表并将值分配给给定的物种。例如,这是列表列表
[["Hi" 52] ["C" 0] ["Hc" 60] ["Hd" 1]]
每个物种都有Hi,C,Hc和Hd作为其属性的一部分,但数量各不相同。我无法弄清楚如何遍历列表列表来执行此操作。
任何帮助将不胜感激。谢谢你的时间。
答案 0 :(得分:3)
您需要的只是一个foreach循环,如下所示。我使用run来设置变量的值。
var BatchedQuickSort = {
swap: function(arr, a, b) {
var temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
},
partition: function(items, left, right, cmp) {
var pivot = items[Math.floor((right + left) / 2)];
var i = left;
var j = right;
while (i <= j) {
while (cmp(items[i],pivot)<0) i++;
while (cmp(pivot,items[j])<0) j--;
if (i <= j) {
this.swap(items, i, j);
i++;
j--;
}
}
return i;
},
sort: function(items, cmp, max, left, right) { //Ref: https://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/
if (items.length > 1) {
left = typeof left != "number" ? 0 : left;
right = typeof right != "number" ? items.length - 1 : right;
var index = this.partition(items, left, right, cmp);
if (left < index - 1) this.sort(items, cmp, max, left, index - 1);
if (index < right && (!max || index<=max)) this.sort(items, cmp, max, index, right);
}
return items;
}
}
//Example Usage
var arr = [];
for(var i=0;i<2000000;i++) arr.push(Math.floor(Math.random() * 1000000));
function myCompare(a,b) { return a-b; }
var pageSize = Math.floor(arr.length/5);
var page = 1;
var timer = window.setInterval(function() {
arr = BatchedQuickSort.sort(arr, myCompare, pageSize*page,pageSize*(page-1));
if(page*pageSize>=arr.length) {
clearInterval(timer);
console.log("Done",arr);
}
page++;
},1);