【问题标题】:Find id by Name Jquery arrays [duplicate]按名称 Jquery 数组查找 id [重复]
【发布时间】:2013-11-07 05:06:31
【问题描述】:

我有一组学生(所有 ID 都是唯一的):

[Object {ID: 1, "John"}, Object  {ID: 2, "Joseph"} ]

我有另一个字符串数组["John","Ram"](我们称之为“数组2”)。 如何找到名称在数组 2 中的学生的 ID(不考虑大小写,即不区分大小写)?

【问题讨论】:

  • “其他字符串数组”应该是["John","ram"]吗?
  • {ID: 1, "John"} 不是一个合适的对象 -- 这些名称应该在属性中设置。
  • 我编辑为对象 {ID: 1, "John"}
  • ... 这仍然不是有效的 JavaScript。 jQuery 只是一个 JavaScript 库——在这种情况下绝对不需要这个库。无论如何,每个 ID 后面的逗号肯定是一个错误(那是 SyntaxError)?

标签: javascript


【解决方案1】:

编辑:删除 jQuery 并修复区分大小写的问题。请注意,这是no longer compatible with IE8,因为在Array.prototype 上使用了map()forEach()indexOf()

按照这些思路可以解决问题:

var names = ['John', 'Joe', 'Ralph'],
    data = [
        {
            id: 1,
            name: 'John'
        },
        {
            id: 2,
            name: 'Joseph'
        },
        {
            id: 3,
            name: 'ralph'
        }
    ],
    results = [];

var lnames = names.map(function(name) {
    return name.toLowerCase();
});

data.forEach(function(item) {
    if (lnames.indexOf(item.name.toLowerCase()) > -1) {
        results.push(item.id);
    }
});

console.log('found: ', results);

这是一个活生生的例子:http://jsfiddle.net/6ptz3/2/

【讨论】:

  • 这是一个原生 JS 解决方案顺便说一句 - still 没有回答 OP 的问题,因为问题格式不正确且结构不清楚:var ids = studentsArray.filter(function(elem){ return namesArray.indexOf(elem.name) !== -1; /* in the names array*/ }).map(function(elem){ return elem.ID; });
  • 在编辑之前,问题中的最后一句话是:“[我正在使用 jquery]”......所以,回答你的问题:OP。
  • 那么抱歉,我的错。我没有看到 OP 在编辑之前提到他正在使用 jQuery。
  • 没问题,感谢您指出 jQuery 已从问题中删除。另外,我必须解决一个区分大小写的问题,我认为您在评论中提到的解决方案中也可能存在该问题。
猜你喜欢
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2010-12-14
  • 2018-11-27
  • 1970-01-01
  • 2012-11-25
相关资源
最近更新 更多