javascript获取唯一键值

时间:2012-10-04 09:04:59

标签: javascript

我有一个包含以下项目的数组:

var jobName = getNextJobName();
var Details = getNextJobDetails();
var item = {
          Name: jobName,
          Details: Details
        };
array.push(item);

我想提取所有唯一名称(来自Name字段)。 (为了创建一个新对象,该对象将特定作业的所有细节分组)。

你能告诉我一个有效的方法吗?

3 个答案:

答案 0 :(得分:5)

您的意思是拥有这些对象的列表,并且您想要提取所有唯一值?

这是一种非常有效的方法,将值存储为名为uniq的新对象的键,值为“Details”元素的数组。

var arr = [ { Name: 'Alex', Details: 'Foo' }, { Name: 'Igor', Details: 'None' }, { Name: 'Alex', Details: 'Boo' } ];
var uniq = {}; // contains all the unique names
for(var i=0; i<arr.length; i++) {
  var el = arr[i].Name;
  if(!uniq[el]) uniq[el] = []; // start the array
  uniq[el].push(arr[i].Details);
}

http://jsfiddle.net/lmatteis/8LWMH/4/

答案 1 :(得分:2)

您可以使用对象有效地进行匹配,然后将对象中的名称读入数组:

var unique = {};
for (var i = 0; i < jobs.length; i++) {
    unique[jobs[i].Name] = 1;
}
var uniqueArray = [];
for (n in unique) uniqueArray.push(n);

演示:http://jsfiddle.net/Guffa/4cH4F/

答案 2 :(得分:0)

以下代码段应该可以解决问题:

var _bzAppUnique = 0; //unique variable to increase at each call
function uniqueID() {
    var d = new Date();
    var u = d.getFullYear() + "," + d.getMonth() + "," + 
            d.getHours() + "," + d.getMinutes() + "," + 
            d.getSeconds() + "," + _bzAppUnique;
    _bzAppUnique++;
    return u.replace(/\,/g, "");
}