js attr1=['2021-02-01','2021-02-02'] attr2=[{date:'2021-02',day:10},{date:'2021-05',day:10}]两个数组筛选出含有2021-02 放到一个新的数组里
时间: 2023-12-19 17:04:15 浏览: 111
可以使用 JavaScript 的 filter() 方法和 includes() 方法来筛选出符合条件的元素,然后将它们放到一个新的数组里。具体实现如下:
```javascript
const attr1 = ['2021-02-01','2021-02-02'];
const attr2 = [{date:'2021-02',day:10},{date:'2021-05',day:10}];
const result = attr2.filter(item => item.date.includes('2021-02'))
.concat(attr1.filter(item => item.includes('2021-02')));
console.log(result); // ["2021-02-01", "2021-02-02", {date: "2021-02", day: 10}]
```
这里先使用 filter() 方法对 `attr2` 数组进行筛选,保留 `date` 属性包含 '2021-02' 的元素;然后再使用 concat() 方法将其与 `attr1` 数组中包含 '2021-02' 的元素合并成一个新的数组。最终输出结果为 `["2021-02-01", "2021-02-02", {date: "2021-02", day: 10}]`。
相关问题
attr1=['2021-02-01','2021-02-02'] attr2=[{date:'2021-02',day:10},{date:'2021-05',day:10}]两个数组筛选出2021-02月份的 放到一个新的数组里
可以使用 Python 的列表推导式来实现这个功能。具体代码如下:
```python
attr1 = ['2021-02-01', '2021-02-02']
attr2 = [{'date': '2021-02', 'day': 10}, {'date': '2021-05', 'day': 10}]
result = [x for x in attr1 + attr2 if isinstance(x, str) and x.startswith('2021-02') or x.get('date', '').startswith('2021-02')]
print(result)
```
输出结果为:
```
['2021-02-01', '2021-02-02', {'date': '2021-02', 'day': 10}]
```
这个代码做了以下几件事情:
1. 将 `attr1` 和 `attr2` 拼接成一个新的列表;
2. 判断每个元素是否为字符串,如果是字符串并且以 `'2021-02'` 开头,或者是字典并且字典的 `'date'` 属性以 `'2021-02'` 开头,则将其加入结果列表中;
3. 最终返回结果列表。
SELECT DATE_FORMAT(t1.createTime, '%Y%m%d%H') AS monTime, IFNULL(t1.monValue,0) AS monValue FROM device_monitor_attr_his t1 INNER JOIN (SELECT MAX(id) id FROM device_monitor_attr_his t where deviceID=27143 AND monKey=107 AND createTime > '2023-03-03' AND createTime < '2023-06-02 23:59:59' GROUP BY DATE_FORMAT(createTime,'%Y%m%d') ) t2 on t2.id = t1.id 转换成elasticsearch怎么写?
这个 SQL 查询可以转换成 Elasticsearch 的聚合查询,具体的查询语句如下:
```
GET /_search
{
"query": {
"bool": {
"must": [
{
"match": {
"deviceID": 27143
}
},
{
"match": {
"monKey": 107
}
},
{
"range": {
"createTime": {
"gte": "2023-03-03",
"lt": "2023-06-02T23:59:59"
}
}
}
]
}
},
"aggs": {
"group_by_date": {
"date_histogram": {
"field": "createTime",
"interval": "day",
"format": "yyyy-MM-dd"
},
"aggs": {
"max_id": {
"max": {
"field": "id"
}
},
"mon_value": {
"terms": {
"script": {
"source": "doc['monValue'].value ?: 0"
}
}
}
}
}
}
}
```
这个查询使用了 Elasticsearch 的聚合查询,首先根据设备 ID、监控指标和时间范围来过滤数据,然后再按照每天的日期进行分组,并且对每个分组内的数据进行聚合计算,其中包括求出每个分组内的最大 ID 值和计算 monValue 的和。注意,这里使用了 Elasticsearch 的脚本语言来处理 monValue 的空值,如果 monValue 为空,则将其值设置为 0。
阅读全文