如何从 JSON API 循环数组

Posted

技术标签:

【中文标题】如何从 JSON API 循环数组【英文标题】:How to loop an array from JSON API 【发布时间】:2018-02-25 00:08:09 【问题描述】:

我想从 Angular2 中的 JSON API 循环数组,但我不知道怎么做?

我想获得小计的总金额。希望你们能帮助我。提前谢谢你。

【问题讨论】:

在打字稿中迭代的大量选项; typescriptlang.org/docs/handbook/iterators-and-generators.html。例如,为总数创建一个新属性,然后使用for..of 遍历每个对象并将每个cart_subtotal 添加到总数中。 【参考方案1】:

试试看,希望对你有帮助

totalAmount:number = 0;
for(let i=0;i<this.data.length;i++)
    totalAmount = totalAmount  + this.data[i].cart_subtotal;

如果cart_subtotal 给出字符串值,则使用:

totalAmount = totalAmount  + parseInt(this.data[i].cart_subtotal);

【讨论】:

【参考方案2】:

我认为更好(更现代)的方法是使用 reduce 函数,因为求和是 reduce 函数的典型示例。你可以这样做:

let sum = ((items, prop) => 
    return arr.reduce((a, b) => 
        return a + b.prop;
    , 0)
)

let sum = sum(cartInfo, 'cart_subtotal')

这不是一个经过测试/工作的示例,但应该让您很好地了解如何以实用和现代的方式实现这种行为:)

【讨论】:

【参考方案3】:

您需要使用*ngFor 指令。 Here 是官方文档的链接,展示了如何使用 *ngFor 指令。在您的情况下,您需要使用对象中的属性,因此我在下面的示例中添加了属性,该示例来自 Angular 文档。您可以使用标准点表示法访问每个单独对象的属性。

来自文档

<ul>
    <li *ngFor="let hero of heroes">
         hero.firstName   hero.lastName 
    </li>
</ul>

更新

因此,如果您只想将所有cart_subtotals 相加,那么您需要在组件中声明一个属性,然后在向数组中添加新对象时更新grandTotal。我不知道您如何将项目添加到数组中,但是每次添加新项目时都需要执行下面相应标记的部分。看起来您的小计也是字符串形式的,因此您需要先解析它们,然后才能对它们进行任何数学运算。

// Declare in your component
private grandTotal: number = 0;

// Run anytime an object is added to the array.
updateGrandTotal() 
    // Instantiate a temporary new grand total variable.
    let newGrandTotal = 0;
    // Iterate over each cart item.
    this.carts.forEach(_Cart => 
        // Add the current cart subtotal to the new grand total.
        newGrandTotal = newGrandTotal + parseInt(_Cart.cart_subtotal)
    )
    // Save the New GrandTotal to the Grand Total Property.
    this.grandTotal = newGrandTotal;

【讨论】:

感谢您的回复先生,先生,我想要发生的事情是我想在我的 ts 先生中展示它。我能做到。我所做的是这样的: this.price = this.data[0].cart_subtotal;我想循环data[0],这样就不用一个一个做。 我不确定*ngFor 是 OP 正在寻找的;他们试图合计迭代项目的值,这将在打字稿中完成,而不是在 HTML 中。我确实同意,我认为这不是一个经过充分研究的问题,这就是为什么我只发表评论而没有提供官方答案的原因。 感谢@Claies,这正是想要的结果 我明白了,对象是如何注入到数组中的?既然您正在使用 Angular,我确定您是以某种方式异步添加它们的?

以上是关于如何从 JSON API 循环数组的主要内容,如果未能解决你的问题,请参考以下文章

如何循环访问和访问多维和关联数组中的各种元素? PHP,JSON 或 XML

如何将这个 Android Java 代码变成一个数组、循环?还是来自 JSON url 输出?

如何在 Zoho CRM Deluge 脚本中使用 for each 循环遍历 JSON 数组

从 for 循环创建 json 对象数组

怎样用for循环动态遍历json数组

快速解析 JSON 并在数组中循环时出错