Javascript JQuery UI自动完成-无法加载对象

Javascript JQuery UI自动完成-无法加载对象,javascript,jquery,arrays,object,autocomplete,Javascript,Jquery,Arrays,Object,Autocomplete,我试图让autocomplete使用jQueryUI,但当我尝试传入标签和值对象时遇到了问题 var people = []; var test = new Array(); var obj = jQuery.parseJSON(data); $.each(obj.data, function(i,person){ people[people.length] = {

我试图让autocomplete使用jQueryUI,但当我尝试传入标签和值对象时遇到了问题

        var people = [];
        var test = new Array();
        var obj = jQuery.parseJSON(data);
        $.each(obj.data, function(i,person){
                people[people.length] = {
                        label: person.id,
                        value: person.name
                };
                test.push(person.name);
        });

        $("#friend").autocomplete({
                source: test,
                select: function(event, ui) {
                    alert(ui.item.id);
                }
        });
当我使用“test”数组时,它工作正常,但当我尝试使用people对象时,似乎什么都没有工作,也没有JS错误

有人知道我遗漏了什么吗

非常感谢

试试:

people.push({value:person.id,label:person.name});
像这样:

var people = []; 
var obj = {data:[{id:1,name:"Adam"},{id:2,name:"Eve"}]};
$.each(obj.data, function(i,person){ 
        people.push( { 
                label: person.name, 
                value: person.id 
        }); 
}); 
$("#friend").autocomplete({ 
        source: people, 
        select: function(event, ui) { 
            alert(ui.item.name); 
        } 
}); 

您正在向后加载人员对象。自动完成在
标签
上工作,而不是在
上工作,因此您是在id而不是名称上自动完成的

标签
将是自动完成用于匹配的文本,
是选择它时返回的内容

只需将其反转即可:

 people[people.length] = {
     label: person.name,
     value: person.id
 };

演示:

当我使用测试数组并开始在框中键入时,我会得到名称列表。但是当我使用people对象时,我什么也得不到……为什么在每种情况下都使用不同的数组方法
[]
vs
new Array()
person[person.length]
vs
.push()
?我觉得代码示例中缺少一些内容。您的选择器正确吗?页面上是否有
input id=“friend”
?适合我()。你确定你把所有的代码都放在这里了吗?是的,正如他说的,数组可以工作,但对象不能。这就是为什么他的对象没有像他期望的那样工作。是的,你是正确的,只有当乔纳尔在上面发布他们的答案时才被注意到。愚蠢的错误,谢谢你。原来我的标签和值是错误的,所以我要找的东西没有显示出来,但是当我搜索ID时,列表出现了。非常感谢!