![](/img/trans.png)
[英]How to get only unique items in a multidimensional array with JavaScript/jquery?
[英]Unique Items in Array using jQuery and Javascript
有一個問題(不是太復雜,但我似乎想不出一個明確的方法來解決)。
我有一系列項目,其中有一個重復出現的 id,因此出於說明目的,請考慮:
[
{name: "john", task: "dig"},
{name: "john", task: "swim"},
{name: "john", task: "eat"},
{name: "paul", task: "dig"},
]
從這里我想創建一個表,其中列是名稱 - 所以約翰和保羅,然后在下面會有任務。
我想我需要 2 個 for 循環,但不確定第一個如何獲得“唯一”名稱。
我可以使用 jQuery 中的某些東西可以解決。
var arr = [ {name: 'john', task: 'dig'}, {name: 'john', task: 'swim'}, {name: 'john', task: 'eat'}, {name: 'paul', task: 'dig'}, ]; var result = arr.reduce(function(table, element) { if(!table[element.name]) { table[element.name] = []; } table[element.name].push(element.task); return table; }, {}); // For demo: document.write(JSON.stringify(result));
您可以借助下划線庫 _.unique 函數來完成。
首先,我們需要使用 JavaScript 映射函數將數組從對象數組轉換為字符串數組。
之后,我們使用 _.unique 來獲取唯一的字符串。
x=[
{name: 'john', task: 'dig'},
{name: 'dani', task: 'didg'},
{name: 'john', task: 'diadg'},
{name: 'john', task: 'diasdg'},
];
x=x.map(function (i) {return i.name}) // ['john','dani','john','john']
x=_.unique(x) // ['john','dani']
http://underscorejs.org/#uniq(_.uniq和 _.unique 是一樣的)
嘗試使用$.each()
var data = [{ name: "john", task: "dig" }, { name: "john", task: "swim" }, { name: "john", task: "eat" }, { name: "paul", task: "dig" }]; $.each(data, function(key, value) { var fn = function(el) { return el.find("tbody").append($("<tr />", { "html": "<td>" + value.task + "</td>" })) } if (!$("table[name=" + value.name + "]").is("*")) { var elem = $("<table />", { "name": value.name, "html": "<tbody><th>" + value.name + "</th></tbody>" }).appendTo("body"); fn(elem) } else { fn($("table[name=" + value.name + "]")) } })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.