相关疑难解决方法(0)

数组中对象属性的总和

我有一个包含属性的数组,例如:

var arrayPeople = [
    {
        name: 'joe',
        job: 'programmer',
        age: 25,
    },
    {
        name: 'bob',
        job: 'plumber',
        age: 30,
    };
];
Run Code Online (Sandbox Code Playgroud)

我想创建一个将返回其平均年龄的函数,这是我目前无法正常工作的函数

var ageAverage = function(array) {
    var age = 0, average;
    for (var i = 0; i < array.length; i++) {
        age += array[i].age;
    }
    average = age / array.length;
    return average;
};
Run Code Online (Sandbox Code Playgroud)

运行此函数时我得到的是非数字

但我能开展的工作是:

var ageAverage = function(array) {
    var age = 0, average;
    for (var i = 0; i < array.length; i++) { …
Run Code Online (Sandbox Code Playgroud)

javascript for-loop

9
推荐指数
2
解决办法
2万
查看次数

错误TypeError:无法读取未定义的属性"length"

这段代码中有一个错误

<img src="../../../assets/gms-logo.png" alt="logo" routerLink="/overview" alt="website icon">
Run Code Online (Sandbox Code Playgroud)

但是当我检查资产文件夹时,gms-logo.png仍然存在angular-cli.json,资产也存在.路径也是正确的.

最近,我一直在研究搜索功能.所以我的假设是,

即使用户仍未关注输入类型,程序是否也开始搜索?我该如何解决?

下面是我的搜索html以及其建议段的显示

<input type="text" placeholder="Search" (keyup)="onSearch($event.target.value)">        
<div class="suggestion"  *ngIf="results.length > 0">
     <div *ngFor="let result of results ">
          <a href="" target="_blank">
                {{ result.name }}
          </a>
     </div>
</div>
Run Code Online (Sandbox Code Playgroud)

以下是我的组件

results: Object;



 onSearch(name) {
            this.search
            .searchEmployee(name)
            .subscribe(
                name => this.results = name,//alert(searchName),this.route.navigate(['/information/employees/']),
                error => alert(error),
                );
}
Run Code Online (Sandbox Code Playgroud)

typeerror google-developer-tools angular-cli google-developers-console angular

7
推荐指数
3
解决办法
3万
查看次数

无法读取未定义的属性“长度”-Angular 7

试图获取对象的图片链接。这些对象在数组中,打字稿中的方法如下所示:

getMealPicture(orderLineMeal: OrderLine): string {
    for (let meal of this.meals) {
      if (meal.id === orderLineMeal.mealId) {
        return meal.picture;
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

返回字符串,并将此字符串放入HTML中:

<img src="{{getMealPicture(orderLineMeal)}}" alt="" class="cartMeal-picture">
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR TypeError: Cannot read property 'length' of undefined
at CheckoutPageComponent.push../src/app/checkout-page/checkout-page.component.ts.CheckoutPageComponent.getMealPicture (checkout-page.component.ts:113)
at Object.eval [as updateRenderer] (CheckoutPageComponent.html:9)
at Object.debugUpdateRenderer [as updateRenderer] (core.js:22482)
at checkAndUpdateView (core.js:21857)
at callViewAction (core.js:22093)
at execEmbeddedViewsAction (core.js:22056)
at checkAndUpdateView (core.js:21853)
at callViewAction (core.js:22093)
at execComponentViewsAction (core.js:22035)
at checkAndUpdateView (core.js:21858)
Run Code Online (Sandbox Code Playgroud)

第一行指向此HTML img标签所在的行113。但是图像在那里,它们有时会在内容加载后加载第二到第二个。您是否认为这是问题所在?

这些膳食(this.meals)是从服务和后端.NET获取的。所以我在构造函数中初始化了这个数组:

meals: Meal[];

this.mealService.getAllMeals().subscribe( listOfMeals => {
  this.meals = …
Run Code Online (Sandbox Code Playgroud)

typescript angular

5
推荐指数
1
解决办法
8370
查看次数

如何在Javascript中获取嵌套数组长度?

我有一个嵌套数组的例子:

var testArray = [1,2,[3,4,[5,6],7],8,9,[10,11],12];
Run Code Online (Sandbox Code Playgroud)

这是我获取嵌套数组长度的函数:

Array.prototype.getLength = function() {
  var sum = 0;
  function getMultiLength(array) {
    for (count = 0; count < array.length; count ++) {
      sum ++;
      if (!array[count].length) {
        getMultiLength(array[count]);
      }
    }
  }
  getMultiLength(this.valueOf());
  return sum;
};
Run Code Online (Sandbox Code Playgroud)

我对结果的期望是12,但我得到的是无限循环:

testArray.getLength(); //infinite loop
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么以及如何获得嵌套数组长度?

javascript arrays function infinite-loop multidimensional-array

1
推荐指数
1
解决办法
5415
查看次数