为什么值的属性存储在我的对象字符串中,我如何访问它们以增加出现次数?

问题描述

创建函数调用频率并传递数组。我正在取数组中的整数值并将它们存储在一个对象中,我的最终目标是检查已经看到的每个数字的出现,如果它们被看到,我将增加计数。为什么属性设置为字符串?,如何访问整数以增加计数。我想增加我对对象的理解。

function frequency(array) {
  let object = {}
  let count = 0
  let num
  let temp = []
  for (var i = 0; i < array.length; i++) {
    num = array[i]
    object[num] = count++
      console.log(object);
  }
}
console.log(frequency([1,2,3,4]));

解决方法

Javascript 对象属性是字符串:任何键值对。因此,您将数字视为字符串键。当您使用整数键(或任何其他非字符串值)设置属性时,它首先被转换为字符串。

要获得数字出现的正确计数,您应该增加与值对应的键,而不是仅仅增加计数变量。我还添加了 typeof 行来检查并确保之前已经设置了键值对。如果不是,它会创建一个并将其赋值为 1,因为这是我们第一次看到该数字。

function frequency(array) {
  let object = {}
  let count = 0
  let num
  let temp = []
  for (var i = 0; i < array.length; i++) {
    num = array[i]
    if(typeof(object[num]) != "undefined")
      object[num]++;
    else
      object[num] = 1;
  }
  console.log(object);
}
frequency([1,2,3,4,5,1]);