Ember.js MutableArray reduce()方法

Ember.js MutableArray reduce()方法

Ember.js是一种开源的JavaScript框架,用于开发基于模型-视图-控制器(MVC)架构的大型客户端Web应用程序。Ember.js是最广泛使用的前端应用程序框架之一。它旨在加快开发速度和提高生产力。目前,它被许多网站使用,包括Square、Discourse、Groupon、Linked In、Live Nation、Twitch和Chipotle。

Ember.js MutableArray reduce方法用于将数组的值合并为一个单独的值。该方法对于从数组中收集汇总信息非常有用。

语法:

reduce( callback, initialValue ) ;

参数:

  • callback: 这是一个在数组的每个元素上执行的函数,并返回结果。
  • initialValue: 这是数组求和的初始值。

返回值: 此方法返回一个减少后的值。

步骤1: 要运行以下示例,您需要拥有一个ember项目。要创建一个,您需要先安装ember-cli。在终端中输入以下代码:

npm install ember-cli

步骤2: 现在你可以通过输入以下代码来创建项目:

ember new <project-name> --lang en

要启动服务器,请输入:

ember serve

示例1

输入以下代码以生成此示例的路径:

ember generate route details

app/route/party.js

import Route from '@ember/routing/route'; 
  
export default class PartyRoute extends Route { 
    partyItems = [2, 3, 5, 6, 7, 8, 9, 2]; 
    ans; 
    itemString; 
    itemList; 
    start; 
    end; 
    model() { 
        return this.partyItems; 
    } 
    setupController(controller, model) { 
        super.setupController(controller, model); 
        controller.set('partyItems', this.partyItems); 
        controller.set('ans', this.ans); 
        controller.set('itemString', this.itemString); 
        controller.set('itemList', this.itemList); 
        controller.set('start', this.start); 
        controller.set('end', this.end); 
    } 
}

app/controller/party.js

import Ember from 'ember'; 
import { 
    toArray, 
    unshiftObject, 
    unshiftObjects, 
    removeAt, 
    reduce, 
} from '@ember/array'; 
  
export default Ember.Controller.extend({ 
    actions: { 
        addItems(itemString) { 
            this.itemList =  
                itemString.split(',').toArray(); 
            if (this.itemList.length == 1) 
                this.partyItems.unshiftObject( 
                this.itemList[0]); 
            else this.partyItems.unshiftObjects( 
            this.itemList); 
            this.set('itemString', ''); 
        }, 
        removeItems(start, end) { 
            this.partyItems.removeAt(start, end); 
        }, 
        sumItems() { 
            let ans = this.partyItems.reduce(function
                (accum, curr) { 
                return accum + curr; 
            }); 
            alert('Sum of Array is ' + ans); 
        }, 
    }, 
});

app/template/party.hbs

{{page-title "Party"}} 
<h3>Here is a list of items: </h3> 
<ul> 
    {{#each @model as |party|}} 
        <li>{{party}}</li> 
      {{/each}} 
</ul> 
<br /><br /> 
<div> 
    <label>Enter Items: </label> 
      {{input value=this.itemString}} 
</div> 
<div> 
    <input 
        type="button"
        id="add-item"
        value="Add Items"
        {{action "addItems" this.itemString}} 
  /> 
</div> 
<br /><br /> 
<div> 
    <label>Enter Start Index: </label> 
      {{input value=this.start}} 
</div> 
<div> 
    <label>Enter End Index: </label> 
      {{input value=this.end}} 
</div> 
<div> 
    <input 
        type="button"
        id="remove-items"
        value="Remove Items"
        {{action "removeItems" this.start this.end}} 
      /> 
</div> 
<br /> 
<br /> 
<div> 
    <input type="button" id="sum-items" 
      value="Item sum" {{action "sumItems"}} /> 
</div> 
{{outlet}}

输出: 访问 localhost:4200/party 查看输出:

Ember.js MutableArray reduce()方法

示例2

输入以下代码以生成此示例的路线:

ember generate route fruits

app/route/fruits.js

import Ember from "ember"; 
import { shiftObject, isAny, isEvery }  
    from "@ember/array"; 
  
export default Ember.Controller.extend({ 
    actions: { 
        removeFruit() { 
            this.fruits.shiftObject(); 
        }, 
        anyFruit() { 
            let Fruit_presence =  
                this.fruits.reduce(function (accum, curr) { 
                return accum || curr['isFruit']; 
            }, true); 
            //alert(`{'isFruit' in this.fruits[0]}`); 
            alert(`{Fruit_presence ? "Yes" : "No"}`); 
        }, 
        allFruit() { 
            let Fruit_presence =  
                this.fruits.reduce(function (accum, curr) { 
                return accum && curr['isFruit']; 
            }, true); 
            //alert(`{'isFruit' in this.fruits[0]}`); 
            alert(`{Fruit_presence ? "Yes" : "No"}`); 
        }, 
    }, 
});

app/controller/fruits.js

import Ember from "ember"; 
import { shiftObject, isAny, isEvery } from "@ember/array"; 
  
export default Ember.Controller.extend({ 
    actions: { 
        removeFruit() { 
            this.fruits.shiftObject(); 
        }, 
        anyFruit() { 
            let Fruit_presence = this.fruits.reduce 
                (function (accum, curr) { 
                return accum || curr['isFruit']; 
            }, true); 
            //alert(`{'isFruit' in this.fruits[0]}`); 
            alert(`{Fruit_presence ? "Yes" : "No"}`); 
        }, 
        allFruit() { 
            let Fruit_presence = this.fruits.reduce 
                (function (accum, curr) { 
                return accum && curr['isFruit']; 
            }, true); 
            //alert(`{'isFruit' in this.fruits[0]}`); 
            alert(`{Fruit_presence ? "Yes" : "No"}`); 
        }, 
    }, 
});

app/templates/fruits.hbs

{{page-title "Fruits"}} 
<h3>Here is a list of eatables: </h3> 
<ul> 
    {{#each @model as |eatable|}} 
        <li style="color: {{eatable.color}}"> 
      {{eatable.name}}</li> 
      {{/each}} 
</ul> 
<br /><br /> 
<input 
    type="button"
      id="remove-eatable"
      value="Remove Eatable"
      {{action "removeFruit"}} 
/> 
<br /><br /> 
<input 
    type="button"
      id="fruit-any"
      value="List Contains Any Fruit?"
      {{action "anyFruit"}} 
/> 
<br /><br /> 
<input 
    type="button"
      id="fruit-all"
      value="List Contains Only Fruit?"
      {{action "allFruit"}} 
/> 
{{outlet}}

输出: 访问 localhost:4200/fruits 查看输出

Ember.js MutableArray reduce()方法

参考文献: https://api.emberjs.com/ember/4.4/classes/MutableArray/methods/reduce?anchor=reduce

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程