首页 > 解决方案 > 在 javascript 中访问和创建属性

问题描述

因为我们可以创建一个具有一些属性的对象,如下所示:

let obj = {}; 
obj.pp1 = "abc";
obj.pp2 = 1;

现在该对象将具有属性 pp1 和 pp2。

现在我在reduce()函数内部使用相同的模式来总结篮子内容如下:

方法一:

const fruitBasket = ['banana', 'cherry', 'orange', 'apple', 'cherry', 'orange', 'apple', 'banana', 'cherry', 'orange', 'fig' ];

const aggregatedBasket = fruitBasket.reduce(
  (ag , item) => {
    if (ag.hasOwnProperty(item) == false){
        ag.item. = 1;
    } else {
        ag.item += 1;
    }
    return ag;
  }, {});

  console.log(aggregatedBasket);

但是当我运行代码时,它返回的输出为:

{项目:1}

我知道这是错误的,因为输出不正确,现在我尝试了以下模式

方法二:

const aggregatedBasket = fruitBasket.reduce(
  (ag , item) => {
    if (ag.hasOwnProperty(item) == false){
        ag[item] = 1;
    } else {
        ag[item] += 1;
    }
    return ag;
  }, {});
  console.log(aggregatedBasket);

现在它正在打印正确的输出,但我无法理解为什么操作员在方法 1.中失败了。

注意:我是JavaScript初学者,请帮助我理解。对于那里的许多专家来说,这可能看起来很简单。

标签: javascript

解决方案


@Pointy 的评论作为答案

ag.item意思是ag['item'],不是ag[item]。(除非item='item':)


推荐阅读