📜  javascript 从对象中选择随机属性 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:41.203000             🧑  作者: Mango

Javascript 从对象中选择随机属性

在Javascript中,我们可以通过Math.random()函数生成随机数,但是如果想要从一个对象中随机选择一个属性,该怎么办呢?本篇文章将为你介绍两种方法。

方法一:使用Object.keys()函数和Math.random()函数

Object.keys()函数返回一个给定对象自身可枚举属性的数组,我们可以使用它来获得对象的所有属性,再结合Math.random()函数生成随机数来选择一个属性。

const obj = {
  name: 'Tom',
  age: 18,
  gender: 'male',
  city: 'Beijing'
}

const keys = Object.keys(obj)
const randomKey = keys[Math.floor(Math.random() * keys.length)]

console.log(randomKey)

代码解释:

  • Object.keys(obj)函数返回一个数组,包含对象obj的所有属性名。
  • Math.random()函数生成一个介于0和1之间的随机数。
  • Math.floor()函数返回一个小于或等于给定数字的最大整数。
  • keys.length表示可选属性的总数。
  • keys[Math.floor(Math.random() * keys.length)]表示选择一个随机属性。
方法二:使用for...in循环和Math.random()函数

我们也可以使用for...in循环来遍历对象的所有属性,再结合Math.random()函数生成随机数,从而得到随机选择的属性。

const obj = {
  name: 'Tom',
  age: 18,
  gender: 'male',
  city: 'Beijing'
}

let randomKey
let i = 0

for (const key in obj) {
  if (Math.random() < 1/++i) {
    randomKey = key
  }
}

console.log(randomKey)

代码解释:

  • for...in循环遍历对象obj的所有属性。
  • Math.random() < 1/++i表示从前i个属性中随机选择一个属性,每个属性被选中的概率相等。
  • randomKey表示随机选择的属性。

以上两种方法都可以随机从一个对象中选择一个属性,根据实际情况选择更为简便的方法即可。