js中将对象obj= {app_id: 'fdsfsd',name:'nnnn'}转为字符串‘?app_id=fdsfsd&name=nnnn’
时间: 2024-01-04 18:02:17 浏览: 32
可以使用 `Object.entries()` 方法将对象转换为键值对数组,然后使用 `map()` 方法将每个键值对转换为字符串,并使用 `join()` 方法将所有字符串连接起来,最终得到目标字符串。以下是示例代码:
```javascript
const obj = {app_id: 'fdsfsd',name:'nnnn'};
const queryString = '?' + Object.entries(obj)
.map(pair => pair.join('='))
.join('&');
console.log(queryString); // 输出:?app_id=fdsfsd&name=nnnn
```
代码中,我们首先将 `obj` 转换为数组 `[ ['app_id', 'fdsfsd'], ['name', 'nnnn'] ]`,然后使用 `map()` 方法将每个数组转换为字符串,比如 `['app_id', 'fdsfsd']` 转换为 `'app_id=fdsfsd'`,最后使用 `join()` 方法将所有字符串连接起来,中间用 `&` 分隔,加上 `?`,就得到了目标字符串。
相关问题
var data = [ {id: 8, user_id: 1, title_name: '测试'}, {id: 7, user_id: 1, title_name: '测试3'}, {id: 8, user_id: 1, title_name: '测试'}, {id: 7, user_id: 1, title_name: '测试3'}, {id: 6, user_id: 1, title_name: '测试2'}, ];用jquery unique不能去除重复的数据
jQuery的$.unique()方法只能去除DOM元素数组中的重复元素,并不能用于普通的JavaScript对象数组。如果要去除普通的JavaScript对象数组中的重复元素,可以自己编写函数实现。以下是一种实现方式:
```javascript
function uniqueArray(arr, key) {
let result = [];
let obj = {};
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i][key]]) {
result.push(arr[i]);
obj[arr[i][key]] = true;
}
}
return result;
}
let data = [
{id: 8, user_id: 1, title_name: '测试'},
{id: 7, user_id: 1, title_name: '测试3'},
{id: 8, user_id: 1, title_name: '测试'},
{id: 7, user_id: 1, title_name: '测试3'},
{id: 6, user_id: 1, title_name: '测试2'}
];
let uniqueData = uniqueArray(data, 'id');
console.log(uniqueData);
```
这个函数接受两个参数,第一个参数是要去重的数组,第二个参数是要作为判断重复的关键字。在这个例子中,我们以对象的"id"属性作为关键字,去重后的结果为:
```javascript
[
{id: 8, user_id: 1, title_name: '测试'},
{id: 7, user_id: 1, title_name: '测试3'},
{id: 6, user_id: 1, title_name: '测试2'}
]
```
HandlerInfo make_handler(void (_C::*fn)(const mavlink::mavlink_message_t*, _T &)) { auto bfn = std::bind(fn, static_cast<_C*>(this), std::placeholders::_1, std::placeholders::_2); const auto id = _T::MSG_ID; const auto name = _T::NAME; const auto type_hash_ = typeid(_T).hash_code(); return HandlerInfo { id, name, type_hash_, [bfn](const mavlink::mavlink_message_t *msg, const mavconn::Framing framing) { if (framing != mavconn::Framing::ok) return; mavlink::MsgMap map(msg); _T obj; obj.deserialize(map); bfn(msg, obj); } }; }
这是一个函数 make_handler,它接受一个指向类成员函数的指针 fn,并返回一个 HandlerInfo 对象。HandlerInfo 对象包含以下信息:
- 消息 ID:_T::MSG_ID
- 消息名称:_T::NAME
- 类型哈希码:typeid(_T).hash_code()
- 回调函数:一个 lambda 表达式,它将传入的 mavlink_message_t 和 mavconn::Framing 参数转换为 _T 对象,调用 fn 函数,并传入 mavlink_message_t 和 _T 对象作为参数。
该函数的实现使用了 std::bind 和 placeholders,将 fn 和 this 指针绑定到了一个新的函数对象 bfn 上,以便在 lambda 表达式中使用。lambda 表达式中先判断 mavconn::Framing 参数是否为 ok,如果不是则直接返回;否则将 mavlink_message_t 转换为 _T 对象,并调用 fn 函数处理。