blog

アプレット FormData パス Array ソリューション

-------------- start-----------------\n\n-------------- end -----------------\n渡されたデータをクエリ文字列に変換すること...

Aug 17, 2020 · 2 min. read
シェア

-------------- オフィシャルサイトスタート

-------------- 公式サイト終了

渡すデータをクエリー文字列に変換することができます。 私はこれを再帰的に以下のコードで行いました。

const doParams = (data, params, prefix) => { if (!params) { return; } data = data || ''; prefix = prefix || ''; if ('[object Object]' == Object.prototype.toString.call(params)) { for (let objName in params) { if (null == params[objName] || undefined == params[objName] || 'createTime' == objName || 'updateTime' == objName) { continue; } if (typeof params[objName] != 'object') { let tmpObjName = parseInt(objName); if (isNaN(tmpObjName)) { data += '&' + encodeURIComponent(prefix + (prefix ? '.' : '') + objName) + '=' + encodeURIComponent(params[objName]); } else { data += '&' + encodeURIComponent(prefix + (prefix && 0 <= prefix.indexOf('.') ? '[' + objName + ']' : '')) + '=' + encodeURIComponent(params[objName]); } } else { let tmpObjName = parseInt(objName); if (isNaN(tmpObjName)) { data += '&' + doParams('', params[objName], prefix + (prefix ? '.' : '') + objName); } else { data += '&' + doParams('', params[objName], prefix + (prefix ? '[' + objName + ']' : '')); } } } } else if ('[object Array]' == Object.prototype.toString.call(params)) { for (let i = 0; i < params.length; i++) { if (!params[i]) { continue; } if (typeof params[i] != 'object') { data += '&' + encodeURIComponent(prefix + (prefix && 0 <= prefix.indexOf('.') ? '[' + i + ']' : '')) + '=' + encodeURIComponent(params[i]); } else { data += '&' + doParams('', params[i], prefix + (prefix ? '[' + i + ']' : '')) } } } else { data += '&' + encodeURIComponent(prefix) + '=' + encodeURIComponent(params); } if(data.indexOf('&') == 0) { data = data.substring(1, data.length); } return data; };

params はバックエンドに渡されるパラメータです。

let queryStr = doParams('', params); let header = {'content-type': 'application/x-www-form-urlencoded'}; wx.request({ method: 'POST', url, //バックエンドのURL, data: queryStr || '', header, success: (res) => { }, fail: (data) => { }, complete: () => { } });
Read next

リートコードにおける高度なデータ構造

208.トライの実装 挿入、検索、メソッドによるトライの実装 211.単語の追加と検索 - データ構造 d...

Aug 17, 2020 · 3 min read