我有一个数千行的庞大数据集,每行约10个字段,大约2MB的数据.我需要在浏览器中显示它.最简单的方法(获取数据,将其放入$scope,让它ng-repeat=""完成它的工作)工作正常,但它开始将浏览器的节点插入DOM时冻结大约半分钟.我该如何处理这个问题?
一种选择是逐行追加行$scope并等待ngRepeat完成将一个块插入DOM,然后再移动到下一个.但AFAIK ngRepeat在完成"重复"时不报告,所以它会变得丑陋.
其他选择是将服务器上的数据拆分成页面并在多个请求中获取它们,但这甚至更加丑陋.
我浏览了Angular文档以寻找类似的东西ng-repeat="data in dataset" ng-repeat-steps="500",却一无所获.我对Angular方式相当新,所以我可能完全忽略了这一点.这方面的最佳做法是什么?
说我有一个数组a:
a = np.array([[1,2,3], [4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])
Run Code Online (Sandbox Code Playgroud)
我想将其转换为1D数组(即列向量):
b = np.reshape(a, (1,np.product(a.shape)))
Run Code Online (Sandbox Code Playgroud)
但这会回来
array([[1, 2, 3, 4, 5, 6]])
Run Code Online (Sandbox Code Playgroud)
这与以下不一样:
array([1, 2, 3, 4, 5, 6])
Run Code Online (Sandbox Code Playgroud)
我可以将此数组的第一个元素手动转换为1D数组:
b = np.reshape(a, (1,np.product(a.shape)))[0]
Run Code Online (Sandbox Code Playgroud)
但是这需要我知道原始数组有多少维度(并且在处理更高维度时连接[0])
是否存在从任意ndarray获取列/行向量的独立于维度的方法?
如何将一个数组(有10个项目)拆分为4个包含最多n项目的块.
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
//a function splits it to four arrays.
console.log(b, c, d, e);
Run Code Online (Sandbox Code Playgroud)
它打印:
['a', 'b', 'c']
['d', 'e', 'f']
['j', 'h', 'i']
['j']
Run Code Online (Sandbox Code Playgroud)
n = 3但是,上述假定值应该是动态的.
谢谢
我需要将JavaScript数组拆分为n大小的块.
例如:给定这个数组
["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13"]
Run Code Online (Sandbox Code Playgroud)
和a n等于4,输出应为:
[ ["a1", "a2", "a3", "a4"],
["a5", "a6", "a7", "a8"],
["a9", "a10", "a11", "a12"],
["a13"]
]
Run Code Online (Sandbox Code Playgroud)
我知道这个问题的纯JavaScript 解决方案,但由于我已经在使用Underscore.js,我想知道下划线是否为此提供了更好的解决方案.
我创建了一个jsPerf测试来检查下划线解决方案的速度有多慢.
javascript split functional-programming underscore.js lodash
我有一系列的电子邮件(它可能只是一封电子邮件,或100封电子邮件),我需要发送带有ajax请求的数组(我知道该怎么做),但我只能发送一个包含10个或更少的电子邮件.因此,如果有一个包含20个电子邮件的原始数组,我需要将它们分成2个数组,每个10个.或者如果原始数组中有15个电子邮件,那么1个数组为10,另一个数组为5.我正在使用jQuery,最好的方法是什么?
想象一下,我有一个像这样的JS数组:
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
Run Code Online (Sandbox Code Playgroud)
我想要的是将该数组拆分为N个较小的数组.例如:
split_list_in_n(a, 2)
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11]]
For N = 3:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11]]
For N = 4:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
For N = 5:
[[1, 2, 3], [4, 5], [6, 7], [8, 9], [10, 11]]
Run Code Online (Sandbox Code Playgroud)
对于Python,我有这个:
def split_list_in_n(l, cols):
""" Split …Run Code Online (Sandbox Code Playgroud) 我想将数组拆分成数组对
所以 var arr=[2,3,4,5,6,4,3,5,5]
将会 newarr =[[2,3],[4,5],[6,4],[3,5],[5]]
我想在我的IndexedDB的objectstore中保存约35000个对象.我使用下面的代码插入.
AddListings = function (x2j_list_new, callback) {
var transaction = db.transaction(["listings"], IDBTransaction.READ_WRITE);
var count = 0;
transaction.oncomplete = function (event) {
if (callback) {
console.log('x2jShowListing Added ' + count + '/' + x2j_list_new.length);
callback([count, x2j_list_new.length]);
}
};
transaction.onerror = function (e) {
console.log("myError: ", e);
if (callback) {
callback(false);
}
};
var store = transaction.objectStore("listings");
$.each(x2j_list_new, function (index0, item0) {
var request = store.put(item0);
request.onsuccess = function (event) {
count++;
// event.target.result
};
});
});
};
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但循环和插入约35000个对象使UI无响应约200秒.我想也许我可以使用WebWorkers,但是WebWorkers中没有IndexedDB.我试图找到批量插入的方法,找不到一个.有关如何在不阻止UI的情况下插入大量对象的任何想法?
请考虑一个数组,如:
arrayAll = [1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
是否有一个允许进行分区以获取的包:
arrayALLPartionned = [[1,2,3],[4,5,6],[7,8,9]]
Run Code Online (Sandbox Code Playgroud)
我可以看到如何使用for循环执行此操作,但如果存在,则会欣赏"预制"功能.
我想将一个字符串拆分成固定长度(例如N).当然,如果原始字符串的长度不是N的倍数,则最后一块可能更短.
我需要最快的方法来完成它,但也是最简单的方法.我一直这样做的方式如下:
var a = 'aaaabbbbccccee';
var b = [];
for(var i = 4; i < a.length; i += 4){ // length 4, for example
b.push(a.slice(i-4, i));
}
b.push(a.slice(a.length - (4 - a.length % 4))); // last fragment
Run Code Online (Sandbox Code Playgroud)
我认为必须有更好的方法来做我想要的.但我不想要额外的模块或库,只要简单的JavaScript就可以.
在问之前,我已经看到了一些使用其他语言解决此问题的解决方案,但它们并未考虑JavaScript而设计.