我有一组动态创建的数组,它们存储为一个数组。
每个嵌套数组中的第一个条目将始终是分类法的名称,后续项目是与该分类法相关联的类别。
我想使用这些数据来创建一个网址,而后者又会在另一个网页上运行查询,就像这样;
http://example.com/?stoma=colostomy&problem=leaks,odour
如何动态拆分每个嵌套数组以创建此结构?
以下是数组的创建方式:https://codepen.io/chops07876/pen/xXWVVy
更新
我已经想出了如何相应地拆分数组,这是最有效的方法吗?
query = '';
$(result).each(function(i){
if(result[i].length >= 2) {
taxonomy = result[i][0];
categories = result[i].slice(1);
query += taxonomy+'='+categories+'&';
}
});
console.log(query.slice(0,-1));
答案 0 :(得分:1)
除非与数百万人打交道,否则你不应该担心表现。
这是实现目标的一种方式,是<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root">
</div>
,filter
和map
的组合。
join
这与ES6单线程
相同var arrays = [[], ["stoma", "colostomy"], ["problem", "leaks", "odour"]];
function stringify( arrays ){
// Remove all elements of length < 2.
var filtered = arrays.filter(function(array){
return array.length > 1;
});
// Convert every array into a string (tax=cat1,cat2...)
var strings = filtered.map(function(array){
var taxonomy = array[0];
var categories = array.slice(1);
return taxonomy + "=" + categories.join(",")
});
// Join all previous strings with `&` and add a `?` on beginning.
return "?" + strings.join("&");
}
console.log( stringify(arrays) )