添加时订购数组项

时间:2015-08-11 04:06:07

标签: javascript jquery arrays

我有一个空数组。

var empArr = [];

我创建了多个base64 url​​字符串并将它们添加到上面的数组中。到目前为止一切都很好我的问题是在将这些url字符串添加到数组中时如何按照我需要的方式对它们进行排序?

我使用了splice()。但由于生成的某些url字符串更快,因此这种方法似乎无法正常工作。

empArr.splice(i, 0, "Lychee"); // i = the position

这是一种用i值创建临时数组然后在完成所有base 64字符串时拼接的方法吗?还是以其他方式更有效地做到这一点?

2 个答案:

答案 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);