Linq JS将对象命名为首字母

时间:2015-12-14 03:20:54

标签: javascript angularjs linq

list = [
    {
        "Id": "547370FD-5185-47F7-B980-C439A010E028",

        "FirstName": "Rahul",
        "LastName": "Grag"
    },
    {

        "Id": "547370FD-5185-47F7-B980-C439A010E027",
        "FirstName": "Mohit",
        "LastName": "V"
    },
    {

        "Id": "547370FD-5185-47F7-B980-C439A010E026",
        "FirstName": "Sanjeev",
        "LastName": "Kumar"
    },
    {

        "Id": "547370FD-5185-47F7-B980-C439A010E025",
        "FirstName": "Manish",
        "LastName": "Kumar"
    },
    {

        "Id": "547370FD-5185-47F7-B980-C439A010E024",
        "FirstName": "Rahul",
        "LastName": "Jain"
    },
    {

        "Id": "547370FD-5185-47F7-B980-C439A010E023",
        "FirstName": "Shikha",
        "LastName": "K"
    }
];

我需要根据FirstName第一个字母对这些对象进行分组。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

这将创建一个对象,其中键是名称的第一个字母。该值是所有列表对象的数组,其FirstName具有相同的第一个字母。

var names = {};

list.forEach(function(obj) {
  if (!obj.FirstName || !obj.FirstName.length) return;

  var firstLetter = obj.FirstName[0];

  if (!names[firstLetter]) {
    names[firstLetter] = [];
  }
  names[firstLetter].push(obj);
});

如果您不确定firstName的第一个字母是否为首都,您可以随时firstLetter.toUpperCase()强制执行该操作。

答案 1 :(得分:0)

假设您正在使用linq.js,这很简单。

var query = Enumerable.From(list).GroupBy("$.FirstName[0]");