Javascript 不同的对象属性列表

Javascript distinct list of object properties

如何从 javascript 对象创建不同属性的列表?

这是一个示例字符串,这个字符串是动态创建的(我不知道它可能包含什么属性和值。

[{
  "ID": 331,
  "DynamicString": "",
  "MyDate": "",
  "TestCheckbox": "false",
  "TestTA": "",
  "BusinessCategory": "Regulatory",
  "PriorityGroup": "Must Do"
}, {
  "ID": 335,
  "DynamicString": "hjkhjkhjk",
  "MyDate": "17/02/2016",
  "TestCheckbox": "true",
  "TestTA": "hjkhjkhjk",
  "BusinessCategory": "Regulatory",
  "PriorityGroup": "Should Do"
}, {
  "ID": 336,
  "DynamicString": "What about this",
  "MyDate": "26/05/2016",
  "TestCheckbox": "false",
  "TestTA": "What about this",
  "BusinessCategory": "Machinery of Government",
  "PriorityGroup": "Should Do"
}]

我希望输出为

"ID", "DynamicString", "MyDate", "TestCheckBox", "TestTA", "BusinessCategory", "PriorityGroup"

我将数据传递到对象中,但不确定循环遍历和创建不同属性列表的最佳方法。

使用Object.keys():

The Object.keys() method returns an array of a given object's own enumerable properties, in the same order as that provided by a for ... in loop (the difference being that a for-in loop enumerates properties in the prototype chain as well).

如果数组项具有相同的属性,那么这将起作用:

var properties = Object.keys(Array[0]);

如果不是,这将有助于遍历所有对象及其键。

var array = [{ "ID": 331, "DynamicString": "", "MyDate": "", "TestCheckbox": "false", "TestTA": "", "BusinessCategory": "Regulatory", "PriorityGroup": "Must Do" }, { "ID": 335, "DynamicString": "hjkhjkhjk", "MyDate": "17/02/2016", "TestCheckbox": "true", "TestTA": "hjkhjkhjk", "BusinessCategory": "Regulatory", "PriorityGroup": "Should Do" }, { "ID": 336, "DynamicString": "What about this", "MyDate": "26/05/2016", "TestCheckbox": "false", "TestTA": "What about this", "BusinessCategory": "Machinery of Government", "PriorityGroup": "Should Do" }],
    properties = function (array) {
        var o = {};
        array.forEach(function (a) {
            Object.keys(a).forEach(function (k) {
                o[k] = true;
            });
        });
        return Object.keys(o);
    }(array);

document.write('<pre>' + JSON.stringify(Object.keys(array[0]), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(properties, 0, 4) + '</pre>');

试试这个

var arr = [{"ID":331,"DynamicString":"","MyDate":"","TestCheckbox":"false","TestTA":"","BusinessCategory":"Regulatory","PriorityGroup":"Must Do"},{"ID":335,"DynamicString":"hjkhjkhjk","MyDate":"17/02/2016","TestCheckbox":"true","TestTA":"hjkhjkhjk","BusinessCategory":"Regulatory","PriorityGroup":"Should Do"},{"ID":336,"DynamicString":"What about this","MyDate":"26/05/2016","TestCheckbox":"false","TestTA":"What about this","BusinessCategory":"Machinery of Government","PriorityGroup":"Should Do"}];
function arrayUnique(array) 
{
    var a = array.concat();
    for(var i=0; i<a.length; ++i) 
    {
        for(var j=i+1; j<a.length; ++j) 
        {
            if(a[i] === a[j])
                a.splice(j--, 1);
        }
    }
    return a;
}
var output = [];
arr.forEach( function(value){ output = output.concat( Object.keys( value ) ) } );//concatenate all the items
console.log ( arrayUnique(output) ); //print the unique elements