使用jQuery和Javascript在数组中唯一项

Unique Items in Array using jQuery and Javascript

本文关键字:唯一 数组 jQuery Javascript 使用      更新时间:2023-09-26

有一个问题(不是太复杂,但我似乎只是想不出一个明确的方法来解决)。

我有一个项目数组,其中有一个重复出现的id,因此为了便于说明,请考虑:

[
    {name: "john", task: "dig"},
    {name: "john", task: "swim"},
    {name: "john", task: "eat"},
    {name: "paul", task: "dig"},
]

从这里我要创建一个表,其中列将是名字-所以约翰和保罗,然后下面是任务。

我认为我需要2个for循环,但不确定第一个如何获得"唯一"名称。

Array.prototype.reduce():

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));

您可以在下划线库_的帮助下完成。独特的功能。

首先,我们需要使用JavaScript map函数将数组从对象数组转换为字符串数组。

之后,我们使用_。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和_。

尝试使用$.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>