如何在对象数组中找到具有最长字符长度的Object键

时间:2015-08-31 10:10:13

标签: javascript arrays node.js object

假设我有一组像这样的对象

var collection = [
{
     name:"John",
     age:12,
     location:"Califonia",
     gender:"Male"
},
{
     name:"Jane",
     age:18,
     location:"New york",
     gender:"Female"
}
]

很明显"location"是具有最长字符长度的对象键。

但是我怎么能动态地得到它,因为我不知道如何提前构建集合。

6 个答案:

答案 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

演示:https://repl.it/@kadimi/longestKey