在对象内找到并返回元素

时间:2015-06-15 14:07:10

标签: javascript jquery

所以我有一个对象。我想要做的是在对象中搜索ID并返回它的其他元素。对于这样的事情,我最好的行动方式是什么?

循环访问对象并检查每个ID?

var questions = [
{
    id          : 'citizenship-1',
    category    : 'citizenship',
    label       : 'Are you an American Citizen?',
    options     : ['Yes','No'],
    forceAnswer : false
   },
{
    id          : 'citizenship-2',
    category    : 'citizenship',
    label       : 'Do you live in the United States?',
    options     : ['Yes','No'],
    forceAnswer : false
}
];

所以我想做的是告诉我的javascript函数在var问题中搜索citizenship-2并返回id,category,label等。

{
id          : 'citizenship-2',
category    : 'citizenship',
label       : 'Do you live in the United States?',
options     : ['Yes','No'],
forceAnswer : false
}

如果有更好的解决方案,我主要使用javascript但也有jQuery可用。

3 个答案:

答案 0 :(得分:1)

您可以使用.filter()函数来获取具有指定值的对象

var filtered = $(questions).filter(function (i, n) {
    return n.id === 'citizenship-2';
});
console.log(filtered[0].category);

Fiddle

答案 1 :(得分:0)

过滤器只是一点乐趣:

var questions = [
{
    id          : 'citizenship-1',
    category    : 'citizenship',
    label       : 'Are you an American Citizen?',
    options     : ['Yes','No'],
    forceAnswer : false
   },
{
    id          : 'citizenship-2',
    category    : 'citizenship',
    label       : 'Do you live in the United States?',
    options     : ['Yes','No'],
    forceAnswer : false
}
];

var id = 'citizenship-1';
var res = questions.filter(function(e) {
    return e.id == id && e;
}, []);

console.log(res);

这样,如果有重复项,它们将在数组中。

小提琴:http://jsfiddle.net/mj65n06y/

(结果在控制台中)

输出:

http://prntscr.com/7h8152 enter image description here

答案 2 :(得分:0)

Try jQuery's $.param(object) function:

var questions = [
{
    id          : 'citizenship-1',
    category    : 'citizenship',
    label       : 'Are you an American Citizen?',
    options     : ['Yes','No'],
    forceAnswer : false
   },
{
    id          : 'citizenship-2',
    category    : 'citizenship',
    label       : 'Do you live in the United States?',
    options     : ['Yes','No'],
    forceAnswer : false
}
];

window.search = function() {
  var object;
  for (q in questions)
    {
    if (questions[q].id == $('#query').val())
      object = questions[q];
    }
  
    alert($.param(object));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="query" placeholder="Type Object ID" />
<button onclick="search()">Search</button>