Javascript在for循环中创建数组

标签 javascript arrays for-loop

我很确定这是一个基本问题,但我的 PHP 背景使我无法解决这个问题。我也无法在 SO 中找到更接近的解决方案。

我有一个对象数组,其中包含一个我想要循环求和的值。一切正常,但我想直接将这些值与输出中的另一个数组相加。

所以这是工作函数:

    function postsCalc(arrayEntry) {
        var postsOutput = [];
        var postLikes = 0;

        for (var i = 0, len = arrayEntry.length; i < len; i++) {
          postLikes += arrayEntry[i].likes.summary.total_count;
        }   

        postsOutput.likes = postLikes;

        return postsOutput;     
    }

输出:

likes : 55555;

哪个效果很好,但我不能将它直接推送到数组键并避免必须执行 postsOutput.likes = postLikes 吗?

像这样:

    function postsCalc(arrayEntry) {
        var postsOutput = [];

        for (var i = 0, len = arrayEntry.length; i < len; i++) {
          postsOutput.likes += arrayEntry[i].likes.summary.total_count;
          // or even a multidimensional:
          postsOutput.totals.likes += arrayEntry[i].likes.summary.total_count;
        }   

        return postsOutput;     
    }

这将输出与上面相同的内容,但避免了额外的步骤,这在 Javascript 中可能吗?

提前致谢

最佳答案

您可以使用 reduce在列表上执行此操作:

function postsCalc(arrayEntry) {
    var postLikes = arrayEntry.reduce(function(a, b) {return a + b.likes.summary.total_count}, 0);

    return {likes: postLikes};     
}

它是这样工作的:Array.reduce(callback, initialValue) where callback = function(a, b) 其中a是累加器(例如跟踪总和等)和 b 是您在列表中迭代的项目的表示。 initialValue 是函数的起点(例如,在第一次迭代时)。

关于Javascript在for循环中创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453725/

相关文章:

javascript - if 语句可以在 usestates 中使用吗?

javascript - 使用js的多行随机文本

python - 在for循环中寻找最长的字符串

arrays - 垂直跨行的数组元素的 MIN/MAX

javascript 重复对象错误

c++ - 对 float 组使用 unique_ptr

java - 在循环中附加到字符串并保留对附加字符串的访问权限

javascript - 在数组中 & 在字符串中

javascript - useEffect 获取 firebase 数据

javascript - 带有特殊符号自动完成功能的自由文本输入