Javascript 从对象数组返回包含特定参数的随机对象

Javascript 从对象数组返回包含特定参数的随机对象,javascript,Javascript,我目前正在以以下方式将数据存储为数组中的对象: let data = []; module.exports.init = function() { database.pool.query("SELECT * FROM data", (error, rows) => { if (error) { logUtil.log.error(`Loading failed: ${ error.message }`); }

我目前正在以以下方式将数据存储为数组中的对象:

let data = [];

module.exports.init = function() {
    database.pool.query("SELECT * FROM data", (error, rows) => {
        if (error) {
            logUtil.log.error(`Loading failed: ${ error.message }`);
        }
        else {
            rows.forEach((row) => data.push({dimension: row.dimension, x: row.x, y: row.y, z: row.z}));
            logUtil.log.info(data);
        }
    });
};
现在数据将保存以下内容:
[{维度:2,x:-973.097,y:-133.411,z:38.2531},{维度:3,x:-116.746,y:-48.414,z:17.226},{维度:2,x:-946.746,y:-128.411,z:37.786},{维度:2,x:-814.093,y:-106.724,z:37.589}]

现在我尝试从这个数组中接收一个随机对象,该数组存储一个特定的维度参数

例如,我想返回一个存储维度的随机对象:2

我尝试使用以下方法过滤阵列:

let result = jsObjects.filter(data => {
  return data.dimension === 2
})
然后从结果中返回一个随机对象


问题:如何以最佳方式接收此随机对象?

您可以分两步完成

  • 获取满足以下条件的所有记录,如
    维度===2

    let resultar=jsObjects.filter(数据=>{
    返回数据。维度===2
    })

  • 从结果中获取随机对象

    var randomElement=resultar[Math.floor(Math.random()*resultar.length)]

  • var arr=[{维度:2,x:-973.097,y:-133.411,z:38.2531},{维度:3,x:-116.746,y:-48.414,z:17.226},{维度:2,x:-946.746,y:-128.411,z:37.786},{维度:2,x:-814.093,y:-106.724,z:37.589}]
    //用特定的标准过滤掉
    让resultar=arr.filter(数据=>{
    返回数据。维度===2
    })
    //获取随机元素
    var randomElement=resultar[Math.floor(Math.random()*resultar.length)];
    
    console.log(randomElement)
    您可以使用
    Math.random()
    并在数组的
    0
    长度范围内

    let result = jsObjects.filter(data => {
      return data.dimension === 2
    })
    let randomObj = result[Math.floor(Math.random() * result.length)]
    

    您已经对数组进行了筛选,现在的问题归结为“如何从数组中选择随机项”,其中有大量重复项:)