uniapp中 let idx = 1; let wz = [{ key: 1, status: 1, goods_id: 92 }, { key: 2, status: 2, goods_id: 93 }, { key: 3, status: 2, goods_id: 94 }, { key: 4, status: 2, goods_id: 95 }] 随机选择一个status等于2并且该条数据的key和idx不同的随机数据
时间: 2024-04-10 13:34:33 浏览: 118
你可以使用以下代码来实现随机选择满足条件的数据:
```javascript
let randomData = wz.filter(item => item.status === 2 && item.key !== idx);
randomData = randomData[Math.floor(Math.random() * randomData.length)];
```
这段代码首先使用`filter`方法过滤`wz`数组中`status`等于2且`key`不等于`idx`的数据,然后使用`Math.random()`方法生成一个随机索引,最后返回随机选择的数据。请确保在使用之前已经定义了`idx`和`wz`数组。
相关问题
在js中,let idx=1,let wz=[{ "status": 2, "key": 1, "goods_id": 104, }, { "status": 1, "key": 2, "goods_id": 105, }, { "status": 2, "key": 3, "goods_id": 106, }, { "status": 1, "key": 4, "goods_id": 107, }, { "status": 2, "key": 5, "goods_id": 108, } ] 随机选择一条status不等于1并且该条数据的key不可以和idx相同的一条数据,在上次随机和下次随机选择中不可重复
你可以使用循环和条件语句来实现在给定数组中随机选择一条满足条件的数据。下面是一个可能的解决方案:
```javascript
let randomItem = null;
let previousRandomItem = null;
do {
randomItem = wz[Math.floor(Math.random() * wz.length)];
} while (randomItem.status === 1 || randomItem.key === idx || randomItem === previousRandomItem);
previousRandomItem = randomItem;
```
这个代码片段使用了一个do-while循环来随机选择数据项。每次选择都会检查所选的数据项是否满足条件:status不等于1,并且key不等于idx,并且不与上次选择的数据项重复。如果不满足条件,则继续进行下一次随机选择,直到找到符合条件的数据项。
在循环之外,可以使用previousRandomItem变量来跟踪上次选择的数据项,以便在下一次选择中进行比较,确保不重复选择相同的数据项。
请注意,这个解决方案假设数组中至少有一条满足条件的数据项。如果数组中没有符合条件的项,那么randomItem将为null。你可以在使用之前添加一些验证来确保数组中有符合条件的项存在。
阅读全文