我有一个包含以下项目的数组:
var jobName = getNextJobName();
var Details = getNextJobDetails();
var item = {
Name: jobName,
Details: Details
};
array.push(item);
我想提取所有唯一名称(来自Name字段)。 (为了创建一个新对象,该对象将特定作业的所有细节分组)。
你能告诉我一个有效的方法吗?
答案 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);
}
答案 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);
答案 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, "");
}