假设我有一组像这样的对象
var collection = [
{
name:"John",
age:12,
location:"Califonia",
gender:"Male"
},
{
name:"Jane",
age:18,
location:"New york",
gender:"Female"
}
]
很明显"location"
是具有最长字符长度的对象键。
但是我怎么能动态地得到它,因为我不知道如何提前构建集合。
答案 0 :(得分:0)
您可以通过命令获取特定对象的数组对象键:
Object.keys(<object>)
为找到最长的密钥创建一个循环。在您的问题中,您需要循环数组中的所有对象
答案 1 :(得分:0)
只需使用MergeSort
循环键,然后选择最长的键,使用以下功能:
Object.keys(obj)
这是一个有效的演示,可以获得数组中所有对象的最长密钥:
var getLongestKey = function getLongestKey(obj) {
for (key in keys) {
if (keys[key].length > longest.length) {
longest = keys[key];
}
}
}
答案 2 :(得分:0)
以下代码将以最佳方式解决您的问题:
x = data{:, {'type'}}; %# This isn't valid MATLAB but whatever...
index = find(strcmp(x,'A') ...
| strcmp(x,'B') ...
| strcmp(x,'C') ...
| strcmp(x,'D'));
答案 3 :(得分:0)
如果你确定集合中的项目总是具有相同的结构,那么你就可以这么简单。
var sorted = (Object.keys(collection[0])).sort(function(a, b){
return b.length - a.length;
});
sorted[0]; // Location
答案 4 :(得分:0)
您可以循环数组中的每个对象,然后循环对象中的每个属性,如下所示:
var collection = [
{
name:"John",
age:12,
location:"Califonia",
gender:"Male"
},
{
name:"Jane",
age:18,
location:"New york",
gender:"Female"
},
{
veryLong: "This key will definitely be the longest"
}
];
var stats = {
key: '',
valLen: 0
};
collection.forEach(function(obj){
for(var prop in obj){
if(obj[prop].length > stats.valLen){
stats.key = prop
stats.valLen = obj[prop].length
}
}
});
console.log(stats.key);
console.log(stats.valLen);
数组中的每个项目可能具有不同的格式。 此示例将记录:&#39; veryLong&#39;作为最长的密钥,39作为其长度。
请参阅此fiddle
答案 5 :(得分:0)
使用这些功能:
HTTP 405 Errors
你可以这样做:
/**
* Get the longest key in an object.
*/
function longestKey(obj) {
return Object.keys(obj).reduce(function(all, current) {
return all.length > current.length ? all : current;
});
}
/**
* Get the object with the longest key from array of objects.
*/
function longestKeyObj(arr) {
return arr.reduce(function(all, current) {
return longestKey(all).length > longestKey(current).length ? all : current;
});
}
哪个输出:
对象是:{longestKey:'blah!' }
关键是:longestKey