/** * 获取对象之后 * @param {Object} json * @param {Object} func */ get_obj_after(json, func){ },
时间: 2023-07-29 07:14:35 浏览: 45
这是一个函数,根据传入的参数获取对象之后执行指定的函数。
函数名:get_obj_after
参数:
- json:要获取的对象
- func:获取对象之后要执行的函数
示例用法:
```
let myObj = {name: "John", age: 30};
function myFunc() {
console.log("Object has been retrieved!");
}
get_obj_after(myObj, myFunc);
```
在上面的例子中,我们传入了一个对象 `myObj` 和一个函数 `myFunc`。当 `myObj` 获取成功之后,会自动执行 `myFunc` 函数,并且在控制台输出 "Object has been retrieved!" 的信息。
相关问题
js中如何挑选数组[{"2178":""},{"2179":"query,insert,update,delete"},{"2180":"query,insert,update,delete"}]对象的key相对应下列数组func_id相等的数组的item [ { "func_id": "2178", "func_name": "页面管理", "func_param": [ "all" ], "func_type": "1", "id": "2178", }, { "func_id": "2179", "func_name": "分组管理", "func_param": [ "all" ], "func_type": "2", "id": "2179", }, { "func_id": "2180", "func_name": "组件管理", "func_param": [ "all" ], "func_type": "2", "id": "2180", }, { "func_id": "2181", "func_name": "模板管理", "func_param": [ "all" ], "func_type": "2", "id": "2181", }, { "func_id": "2182", "func_name": "接口管理", "func_param": [ "all" ], "func_type": "1", "id": "2182", } ],最终得到结果为:[ { "func_id": "2178", "func_name": "页面管理", "func_param": [ "all" ], "func_type": "1", "id": "2178", }, { "func_id": "2179", "func_name": "分组管理", "func_param": [ "all" ], "func_type": "2", "id": "2179", }, { "func_id": "2180", "func_name": "组件管理", "func_param": [ "all" ], "func_type": "2", "id": "2180", } ]
在JavaScript中,你可以使用Array的`filter()`方法来筛选出符合条件的数组项。以下是实现该功能的代码:
```javascript
const array1 = [{"2178":""},{"2179":"query,insert,update,delete"},{"2180":"query,insert,update,delete"}];
const array2 = [
{
"func_id": "2178",
"func_name": "页面管理",
"func_param": [
"all"
],
"func_type": "1",
"id": "2178",
},
{
"func_id": "2179",
"func_name": "分组管理",
"func_param": [
"all"
],
"func_type": "2",
"id": "2179",
},
{
"func_id": "2180",
"func_name": "组件管理",
"func_param": [
"all"
],
"func_type": "2",
"id": "2180",
},
{
"func_id": "2181",
"func_name": "模板管理",
"func_param": [
"all"
],
"func_type": "2",
"id": "2181",
},
{
"func_id": "2182",
"func_name": "接口管理",
"func_param": [
"all"
],
"func_type": "1",
"id": "2182",
}
];
const filteredArray = array2.filter(item => array1.some(obj => obj.hasOwnProperty(item.func_id)));
console.log(filteredArray);
```
输出结果为:
```javascript
[
{
func_id: '2178',
func_name: '页面管理',
func_param: [ 'all' ],
func_type: '1',
id: '2178'
},
{
func_id: '2179',
func_name: '分组管理',
func_param: [ 'all' ],
func_type: '2',
id: '2179'
},
{
func_id: '2180',
func_name: '组件管理',
func_param: [ 'all' ],
func_type: '2',
id: '2180'
}
]
```
这段代码使用`filter()`方法对`array2`进行筛选,判断是否存在一个对象在`array1`中具有与其`func_id`相同的属性。如果存在,则保留该对象。最后返回的是符合条件的数组项。
把这段代码转化为python代码(package service import ( "encoding/json" "errors" "fmt" "gin-syudy/api/device/req" "gin-syudy/define" "gin-syudy/models" "gin-syudy/mqtt" "gin-syudy/tools/resp" "gin-syudy/utils" mq "github.com/eclipse/paho.mqtt.golang" "github.com/gin-gonic/gin" "log" "net/http" "strconv" "time" ) // DeviceController 控制设备 // @BasePath /api/v1 // @Description 启动对应设备 // @Tags 启动设备 // @param identity query string false "Identity" // @param controllerId query string false "controllerId" // @param controlState query string false "controlState" // @Success 200 {object} resp.Response "{"code":200,"data":[...]}" // @Failure 502 {object} resp.Response "{"code":502,"data":[...]}" // @Router /api/v1/device/start [Post] func DeviceController(c *gin.Context) { device := new(models.DeviceBasic) write := new(mqtt.Write) device.Identity = c.Query("identity") id, _ := strconv.Atoi(c.Query("controllerId")) fmt.Println(id) state, _ := strconv.Atoi(c.Query("controllerState")) fmt.Println(state) write.Id = uint32(id) write.State = uint32(state) if device.Identity == "" { resp.RespFail(c, http.StatusBadGateway, errors.New("必填参数为空"), resp.FoundFail) return } deviceBasic := device.GetTopicByIdentity() subTopic := "Device/" + deviceBasic.ItemName + "/" + deviceBasic.BridgeName + "/control" + deviceBasic.Secret fmt.Println(subTopic) sendTopic := "Host/" + deviceBasic.ItemName + "/" + deviceBasic.BridgeName + "/control" + deviceBasic.Secret fmt.Println(sendTopic) dataChan := make(chan *mqtt.StartDataResp, 1) mqtt.SubscribeMessage(subTopic, func(client mq.Client, message mq.Message) { fmt.Printf("MESSAGE : %s\n", message.Payload()) fmt.Printf("TOPIC : %s\n", message.Topic()) subscribeStartData := new(mqtt.StartDataResp) err := json.Unmarshal(message.Payload(), &subscribeStartData) if err != nil { resp.RespFail(c, http.StatusBadGateway, err, "回调函数格式不正确") return } dataChan <- subscribeStartData }) startData := new(mqtt.StartData) startData.SampTime = time.Now().String() startData.CommandID = utils.GetUUid() startData.Write = write data, _ := json.Marshal(startData) err := mqtt.SendMessage(sendTopic, data) if err != nil { resp.RespFail(c, http.StatusBadGateway, err, resp.FoundFail) return } responseMessage := <-dataChan err, _ = mqtt.Unsubscribe(sendTopic) if err != nil { resp.RespFail(c, http.StatusBadGateway, err, "取消订阅失败") return } resp.RespOK(c, responseMessage, "控制成功") })
以下是将给定的 Go 代码翻译为 Python 的代码:
```python
import json
import logging
import time
from http import HTTPStatus
import paho.mqtt.client as mqtt
from flask import jsonify, request
from service.models import DeviceBasic
from service.mqtt import SendMessage, SubscribeMessage, Unsubscribe
from service.tools.resp import RespFail, RespOK
from service.utils import GetUUid
# DeviceController
# 控制设备
# @BasePath /api/v1
# @Description 启动对应设备
# @Tags 启动设备
# @param identity query string false "Identity"
# @param controllerId query string false "controllerId"
# @param controlState query string false "controlState"
# @Success 200 {object} resp.Response "{"code":200,"data":[...]}"
# @Failure 502 {object} resp.Response "{"code":502,"data":[...]}"
# @Router /api/v1/device/start [Post]
def DeviceController():
device = DeviceBasic()
device.identity = request.args.get('identity', '')
id = int(request.args.get('controllerId', 0))
logging.debug(f"id: {id}")
state = int(request.args.get('controllerState', 0))
logging.debug(f"state: {state}")
write = Write()
write.id = id
write.state = state
if not device.identity:
RespFail(HTTPStatus.BAD_GATEWAY, errors=["必填参数为空"])
return
deviceBasic = device.GetTopicByIdentity()
subTopic = f"Device/{deviceBasic.ItemName}/{deviceBasic.BridgeName}/control{deviceBasic.Secret}"
logging.debug(f"subTopic: {subTopic}")
sendTopic = f"Host/{deviceBasic.ItemName}/{deviceBasic.BridgeName}/control{deviceBasic.Secret}"
logging.debug(f"sendTopic: {sendTopic}")
dataChan = []
def on_message(client, userdata, message):
logging.debug(f"MESSAGE : {message.payload}")
logging.debug(f"TOPIC : {message.topic}")
subscribeStartData = mqtt.StartDataResp()
try:
subscribeStartData = json.loads(message.payload)
except json.JSONDecodeError as e:
RespFail(HTTPStatus.BAD_GATEWAY, errors=[f"回调函数格式不正确: {str(e)}"])
return
dataChan.append(subscribeStartData)
mqtt.SubscribeMessage(subTopic, on_message)
startData = mqtt.StartData()
startData.SampTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
startData.CommandID = GetUUid()
startData.Write = write
data = json.dumps(startData, default=lambda obj: obj.__dict__, ensure_ascii=False)
err = SendMessage(sendTopic, data.encode())
if err:
RespFail(HTTPStatus.BAD_GATEWAY, errors=[err])
return
responseMessage = dataChan[0]
err = Unsubscribe(sendTopic)
if err:
RespFail(HTTPStatus.BAD_GATEWAY, errors=[f"取消订阅失败: {err}"])
return
RespOK(responseMessage, message="控制成功")
```