如何将Parse查询提取或转换为数组(JavaScript SDK)

时间:2015-05-10 02:04:43

标签: javascript arrays database parse-platform

我的Parse数据库中有一个用数字填充的列,我试图将它们全部加在一起以获得总数。

如果返回的数据是单个数组,我知道如何一起添加,但我只能弄清楚如何将数字作为单个对象返回。这是我的代码:

        var query = new Parse.Query(Services);
        query.exists("costMonthly");
        query.find({
            success: function (results) {
                for (var i = 0; i < results.length; i++) {
                    var object = results[i];
                    console.log(object.get('costMonthly'));
                }
            },
            error: function (error) {
                alert("Error: " + error.code + " " + error.message);
            }
        });

我如何获取我想要的数组或至少将我拥有的内容转换为一个?

2 个答案:

答案 0 :(得分:2)

看起来您正在尝试对costMonthly字段求和。您可以使用reduce轻松完成此操作:

var query = new Parse.Query(Services);
query.exists("costMonthly");
query.find({
    success: function (results) {
        var sum = results.reduce(function(prev, cur) {
           return prev + cur.get('costMonthly');
        }, 0);
    },
    error: function (error) {
        alert("Error: " + error.code + " " + error.message);
    }
});

如果您的目标是costMonthly值的数组,则可以使用:

var monthlyCosts = results.map(function(item) { 
   return item.get('costMonthly'); 
});

在此处详细了解reducehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

答案 1 :(得分:2)

您可以创建一个临时数组,并通过迭代推送结果,而不是最佳解决方案,但如果您想稍后操作结果,则非常有用:

/*NEW Jquery inject*/
var script = unsafeWindow.document.createElement("SCRIPT");
    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js';
    script.type = 'text/javascript';
    unsafeWindow.document.getElementsByTagName("head")[0].appendChild(script);
    script.addEventListener('load', function(){ 
        jQuery = unsafeWindow['jQuery'];
        unsafeWindow['$_'] = jQuery.noConflict(true);
    }, false);

/*OLD Jquery inject*/
/*function addJQuery(callback) {
    var script = document.createElement("script");
    script.setAttribute("src", "https://code.jquery.com/jquery-2.0.3.min.js");
    script.addEventListener('load', function() {
        var script = document.createElement("script");
        script.textContent = "window.jQQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
        document.body.appendChild(script);
    }, false);
    document.body.appendChild(script);
}*/