我目前正在通过以下方式将数据存储为数组内的对象:
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);
}
});
};
数据现在将包含以下内容:[{ dimension: 2, x: -973.097, y: -133.411, z: 38.2531 }, { dimension: 3, x: -116.746, y: -48.414, z: 17.226 }, { dimension: 2, x: -946.746, y: -128.411, z: 37.786 }, { dimension: 2, x: -814.093, y: -106.724, z: 37.589 }]
现在,我正在尝试从此数组中接收一个存储特定维度参数的随机对象。
例如,我想返回一个存储维度的 random 对象: 2
我尝试使用类似以下的方法过滤数组:
let result = jsObjects.filter(data => {
return data.dimension === 2
})
然后从结果中返回一个随机对象。
问题:如何以最佳方式接收此随机对象?
答案 0 :(得分:1)
您可以分两步进行。
获取所有符合dimension === 2
let resultArr = jsObjects.filter(data => {
return data.dimension === 2
})
从结果中获取随机对象。
var randomElement = resultArr[Math.floor(Math.random() * resultArr.length)];
var arr = [{ dimension: 2, x: -973.097, y: -133.411, z: 38.2531 }, { dimension: 3, x: -116.746, y: -48.414, z: 17.226 }, { dimension: 2, x: -946.746, y: -128.411, z: 37.786 }, { dimension: 2, x: -814.093, y: -106.724, z: 37.589 }]
//Filter out with specific criteria
let resultArr = arr.filter(data => {
return data.dimension === 2
})
//Get random element
var randomElement = resultArr[Math.floor(Math.random() * resultArr.length)];
console.log(randomElement)
答案 1 :(得分:0)
您可以使用Math.random()
并在数组0
至length
的范围内使用。
let result = jsObjects.filter(data => {
return data.dimension === 2
})
let randomObj = result[Math.floor(Math.random() * result.length)]