javascript - 如何在没有 Object.keys() 的情况下遍历对象数组?

标签 javascript arrays algorithm loops object

我是 JavaScript 的初学者,我正在尝试 Object.keys() 或任何正则表达式来解决这个问题。我有一个可行的解决方案,但我想知道是否有更好的方法在仍在循环的同时调用数组中的对象键。如果有人有办法做到这一点,那是基本的,请告诉我。

问题: 创建一个名为 keyCount 的函数,它接受两个参数,一个对象数组和一个字符串。该函数应返回一个数字,该数字表示该键在对象数组中出现的次数。

预期结果: countTimesOfKey([{name:"Sharon"}, {name: "Manish"},{lastName: "Terma"}], "name"))//2

我的答案:

function countTimesOfKey(arr, str) {
  let count = 0

  for (let i in arr){
    let test = arr[i]
    let test2 = test[str]

   if (test2 !== undefined){
      count += 1
    }
  }
  return count
}

最佳答案

您可以使用 Array.filter过滤掉数组中具有 str 作为属性的项目(通过使用 Object.hasOwnProperty ),然后返回结果数组的长度:

function countTimesOfKey(arr, str) {
  return arr.filter(e => e.hasOwnProperty(str)).length;
}

console.log(countTimesOfKey([{
  name: "Sharon"
}, {
  name: "Manish"
}, {
  lastName: "Terma"
}], "name"))

关于javascript - 如何在没有 Object.keys() 的情况下遍历对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69035968/

相关文章:

php - 为什么 $_REQUEST 是空的

javascript - Lodash 是否与 _.keys 相反?

c++ - 动态规划算法

algorithm - 在 n log n 时间内从排列构建二叉树

"within x of"的 JavaScript 运算符

javascript - 如何使用应用程序脚本计算单元格数量并根据它更改其他列中的上下文?

javascript - 将对象数组转换为数组数组

javascript - 幕后发生了什么来防止调用绑定(bind)方法更改 this 对象?

javascript - JS中递归调用函数的次数

algorithm - 如何将递归定义的输入大小函数转换为问题输入大小的直接函数?