我有一个空数组。
var empArr = [];
我创建了多个base64 url字符串并将它们添加到上面的数组中。到目前为止一切都很好我的问题是在将这些url字符串添加到数组中时如何按照我需要的方式对它们进行排序?
我使用了splice()
。但由于生成的某些url字符串更快,因此这种方法似乎无法正常工作。
empArr.splice(i, 0, "Lychee"); // i = the position
这是一种用i值创建临时数组然后在完成所有base 64字符串时拼接的方法吗?还是以其他方式更有效地做到这一点?
答案 0 :(得分:0)
根据我的理解,你想在数组变量中添加额外的填充。
您可以添加数组变量的最后一个或乞讨,如
//It will add at last
empArr.splice((empArr.length-1), 0, "Lychee");
//It will add at first
empArr.splice(0, 0, "Lychee");
希望对你有帮助......
答案 1 :(得分:0)
这是一个非常基本的b树的例子;它可以做两件事:插入新数据,并按顺序提取数据。在您的情况下,这应该是您所需要的。
function Tree() { // CONSTRUCTOR
var root = null;
this.insert = function(item) {
var newLeaf = new Leaf(item); // CREATE NEW LEAF WITH DATA
var branch, leaf = this.root;
var before;
while (leaf != null) { // FIND PLACE IN TREE
branch = leaf;
before = newLeaf.comesBefore(leaf);
if (before) leaf = branch.left
else leaf = branch.right;
}
if (this.root == null) this.root = newLeaf // FIRST LEAF IN EMPTY TREE
else if (before) branch.left = new Leaf(item) // ATTACH LEAF TO BRANCH
else branch.right = new Leaf(item);
}
this.shift = function() {
var branch = this.root, leaf = this.root;
if (leaf == null) return null; // EMPTY TREE
while (leaf.left != null) { // SEARCH LEFTMOST LEAF
branch = leaf;
leaf = branch.left;
}
if (leaf == this.root) this.root = leaf.right // ROOT IS LEFTMOST
else branch.left = leaf.right; // BRANCH INHERITS RIGHT SIDE
return leaf.item;
}
function Leaf(item) { // CONSTRUCTOR
this.item = item;
this.left = null;
this.right = null;
this.comesBefore = function(other) { // REPLACE BY REAL DATA COMPARISON
return (this.item < other.item);
}
}
}
var t = new Tree();
t.insert("lychee");
t.insert("pomegranate");
t.insert("tangerine");
t.insert("banana");
t.insert("starfruit");
t.insert("grapefruit");
t.insert("apple");
while (result = t.shift()) console.log(result);