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