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

Javascript 如何在对象数组中找到字符长度最长的对象键,javascript,arrays,node.js,object,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”是字符长度最长的对象键 但是我如何才能动态地获取此信息,因为我不知道集合

假设我有一个这样的对象集合

var collection = [
{
     name:"John",
     age:12,
     location:"Califonia",
     gender:"Male"
},
{
     name:"Jane",
     age:18,
     location:"New york",
     gender:"Female"
}
]
很明显,
“location”
是字符长度最长的对象键


但是我如何才能动态地获取此信息,因为我不知道集合将如何提前结构化。

您可以通过命令获取特定对象的数组对象键:

Object.keys(<object>) 
Object.keys()

循环查找最长的关键点。在您的问题中,需要对数组中的所有对象进行循环

您可以通过命令获取特定对象的数组对象键:

Object.keys(<object>) 
Object.keys()

循环查找最长的关键点。在您的问题中,您需要对数组中的所有对象进行循环

只需使用
object.keys(obj)
循环键,然后选择最长的一个,使用以下功能:

var getLongestKey = function getLongestKey(obj) {
  for (key in keys) {
    if (keys[key].length > longest.length) {
      longest = keys[key];
    }
  }
}
这是一个工作演示,用于获取数组中所有对象的最长密钥:

var集合=[{
姓名:“约翰”,
年龄:12岁,
地点:“加州”,
性别:“男性”
}, {
姓名:“简”,
年龄:18岁,
地点:“纽约”,
性别:“女性”
}];
var getLongestKey=函数getLongestKey(obj){
用于(输入键){
if(键[key].length>最长.length){
最长=键[键];
}
}
}
对于(i=0;i}
只需使用
对象循环键。键(obj)
并拾取最长的键,使用以下功能:

var getLongestKey = function getLongestKey(obj) {
  for (key in keys) {
    if (keys[key].length > longest.length) {
      longest = keys[key];
    }
  }
}
这是一个工作演示,用于获取数组中所有对象的最长密钥:

var集合=[{
姓名:“约翰”,
年龄:12岁,
地点:“加州”,
性别:“男性”
}, {
姓名:“简”,
年龄:18岁,
地点:“纽约”,
性别:“女性”
}];
var getLongestKey=函数getLongestKey(obj){
用于(输入键){
if(键[key].length>最长.length){
最长=键[键];
}
}
}
对于(i=0;i}
以下代码将以最佳方式解决您的问题:

var sorted=(Object.key(集合[0])).sort(函数(a,b){
返回b.length-a.length;
});
已排序[0];//位置

以下代码将以最佳方式解决您的问题:

var sorted=(Object.key(集合[0])).sort(函数(a,b){
返回b.length-a.length;
});
已排序[0];//位置

如果您确定集合中的项目始终具有相同的结构,则可以简单地执行此操作

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

function getMaxKeys(collection){
        var keys = Object.keys(collection[0]);
        var keyWithMaxWidth = keys.reduce(function(prev, current){
            if(prev.length > current.length) return prev;
            else return current
        });
        return keyWithMaxWidth;
}

getMaxKeys(collection) //location

如果您确定集合中的项目始终具有相同的结构,则可以简单地执行此操作

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

function getMaxKeys(collection){
        var keys = Object.keys(collection[0]);
        var keyWithMaxWidth = keys.reduce(function(prev, current){
            if(prev.length > current.length) return prev;
            else return current
        });
        return keyWithMaxWidth;
}

getMaxKeys(collection) //location

可以循环数组中的每个对象,然后循环对象中的每个属性,如下所示:

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);
数组中的每个项可能具有不同的格式。 本例将把“veryLong”记录为最长键,39记录为其长度


如图所示,可以循环数组中的每个对象,然后循环对象中的每个属性,如下所示:

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);
数组中的每个项可能具有不同的格式。 本例将把“veryLong”记录为最长键,39记录为其长度

使用以下功能查看此

/**
 * 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;
  });
}
你可以做:

const me = {
  name: 'nabil',
  occupation: 'programming',
  dob: '1984-12-28',
};

const you = {
  longestKey: 'blah!',
};

console.log('The object is: ', longestKeyObj([me, you]));
console.log('The key is: ', longestKey(longestKeyObj([me, you])));
哪些产出:

对象是:{longestKey:'blah!'}

关键是:最长的关键

演示:

具有以下功能:

/**
 * 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;
  });
}
你可以做:

const me = {
  name: 'nabil',
  occupation: 'programming',
  dob: '1984-12-28',
};

const you = {
  longestKey: 'blah!',
};

console.log('The object is: ', longestKeyObj([me, you]));
console.log('The key is: ', longestKey(longestKeyObj([me, you])));
哪些产出:

对象是:{longestKey:'blah!'}

关键是:最长的关键

演示: