所以我有一个对象。我想要做的是在对象中搜索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可用。
答案 0 :(得分:1)
您可以使用.filter()
函数来获取具有指定值的对象
var filtered = $(questions).filter(function (i, n) {
return n.id === 'citizenship-2';
});
console.log(filtered[0].category);
答案 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/
(结果在控制台中)
输出:
答案 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>