Javascript 表排序修复程序

Javascript 表排序修复程序,javascript,jquery,json,sorting,Javascript,Jquery,Json,Sorting,我在一个表中有来自多个json api链接的数据 我的代码目前是 <script src="js/1.js"></script> <script src="js/2.js"></script> 及 for(var i=0;i您是否可以获取两个json响应,按价格顺序对它们进行排序,然后将它们添加到dom中?这样您就不必访问dom来对数据进行排序了 如果您使用的是jQuery,则会出现类似的情况。基本上,一旦两个ajax请求都解决了,您就可以对现有

我在一个表中有来自多个json api链接的数据

我的代码目前是

<script src="js/1.js"></script>
<script src="js/2.js"></script>


for(var i=0;i您是否可以获取两个json响应,按价格顺序对它们进行排序,然后将它们添加到dom中?这样您就不必访问dom来对数据进行排序了

如果您使用的是jQuery,则会出现类似的情况。基本上,一旦两个ajax请求都解决了,您就可以对现有数据执行任何操作。从这里,您可以合并它们,对它们进行排序,然后运行您的片段来填充表

var urlDatas = [];
$.when(
    $.getJSON(someUrl, function(data) {
        urlDatas.push(data);
    }),
    $.getJSON(someOtherUrl, function(data) {
        urlDatas.push(data);
    })
).then(function() {
    //not completely sure if extend returns a value or just mutates, target.
    finalData = $.extend(true, {}, urlDatas[0], urlDatas[1]);

    //run a sort on that data
    sortData(finalData);

    //add it to your dom
    insertData(finalData);
});

因为您从两个ajax请求中提取数据,所以最好将这两个结果存储在一个全局数组中,您可以对该数组进行排序和循环,以按价格顺序构建表

var resultsArray = new Array();
for (var i = 0; i < json.results.length; i++) {
    resultsArray.push(json.results[i]);
}
resultsArray.sort(function(a,b) {
    return a.price - b.price;
});
for (var i = 0; i < json.results.length; i++) {
    //print your table here
    var price = resultsArray[i].price;
    //etc...
}
var resultsArray=new Array();
for(var i=0;i

我在一个

中充分展示了这一点,我不知道o.o超级新的所有内容,不知道如何或在何处添加它,以及现在正在工作的内容:)json数据是什么样子的?json来自一个url。{“price”:“$107.00”},{“section”:“Standing”},{“available”:[“1”,“2”]},嘿,那里,我应该把URL放在哪里?很抱歉成为一个noob问题:)您好,我刚才也尝试添加了表,但它没有对价格进行排序,请看fiddle@SamRoberts,您是否需要以这种方式使用两个不同的脚本文件?如果您将它们合并到一个文件中会怎么样?这可以接受吗?
var sortTable = function(){ 
    $("#tableid tbody tr").detach().sort(function(a,b){
    //substring was added to omit currency sign, you can remove it if data-price attribute does not contain it.
        return parseFloat($(a).data('price').substring(1))- parseFloat($(b).data('price').substring(1));
    })
    .appendTo('#tableid tbody');
};
for(var i=0; i<json.results.length; i++) {
    ....
}
sortTable();
var urlDatas = [];
$.when(
    $.getJSON(someUrl, function(data) {
        urlDatas.push(data);
    }),
    $.getJSON(someOtherUrl, function(data) {
        urlDatas.push(data);
    })
).then(function() {
    //not completely sure if extend returns a value or just mutates, target.
    finalData = $.extend(true, {}, urlDatas[0], urlDatas[1]);

    //run a sort on that data
    sortData(finalData);

    //add it to your dom
    insertData(finalData);
});
var resultsArray = new Array();
for (var i = 0; i < json.results.length; i++) {
    resultsArray.push(json.results[i]);
}
resultsArray.sort(function(a,b) {
    return a.price - b.price;
});
for (var i = 0; i < json.results.length; i++) {
    //print your table here
    var price = resultsArray[i].price;
    //etc...
}