我想创建一个新对象.

仅添加值的对象​​同一把 keys .

我想以一种方式将num1相互相加,num2与num2相加.

创建的对象的值为num1:4.

但我不知道为什么这个值是NaN

这是我的密码.


let mydata = [
    {num1: 1 , num2: 2 , num3: 3, num4: 4},
    {num1: 1 , num2: 2 , num3: 3, num4: 4},
    {num1: 1 , num2: 2 , num3: 3, num4: 4},
    {num1: 1 , num2: 2 , num3: 3, num4: 4},
    ]
 
    const sum = {};

  for(let prop of mydata){
    for(let key in prop){
      sum[key] += prop[key];
    }
  }
  
 console.log(sum);
 //{ num1: NaN, num2: NaN, num3: NaN, num4: NaN } => why Nan?? 

推荐答案

sum[key]默认值为undefinedundefined+a number=NaN,因此最初需要为sum[key]指定0

let mydata = [{
    num1: 1,
    num2: 2,
    num3: 3,
    num4: 4
  },
  {
    num1: 1,
    num2: 2,
    num3: 3,
    num4: 4
  },
  {
    num1: 1,
    num2: 2,
    num3: 3,
    num4: 4
  },
  {
    num1: 1,
    num2: 2,
    num3: 3,
    num4: 4
  },
]

const sum = {};

for (let prop of mydata) {
  for (let key in prop) {
    if (!sum[key]) {
      sum[key] = 0;
    }
    sum[key] += prop[key];
  }
}

console.log(sum);
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}

Typescript相关问答推荐

使用TypeScrip根据(可选)属性推断结果类型

TypeScrip原始字符串没有方法

在包含泛型的类型脚本中引用递归类型A<;-&B

是否可以从函数类型中创建简化的类型,go 掉参数中任何看起来像回调的内容,而保留其余的内容?

剧作家元素发现,但继续显示为隐藏

有没有办法防止类型交集绕过联合类型限制?

创建Angular 为17的动态形状时出错

API文件夹内的工作员getAuth()帮助器返回:{UserID:空}

接受字符串或数字的排序函数

KeyOf关键字在特定示例中是如何工作的

如何在Type脚本中创建一个只接受两个对象之间具有相同值类型的键的接口?

为什么看起来相似的代码在打字时会产生不同的错误?

映射类型不是数组类型

Vite+Chrome扩展 list v3-;不能在模块外使用import语句;对于inpage脚本

为什么TS条件返回要求不明确的强制转换而不是精确的强制转换?

断言同级为true或抛出错误的Typescript函数

如何使用布尔值构建对象 TYPE,但至少有一个必须为 true

如何强制对象数组中的对象属性具有非空字符串值?

是否有可能不允许在 TypeScript 中设置类属性,但也会抛出运行时错误?

Deno fresh - 岛上的列表未更新