我是JavaScript的新手,我正在尝试制作一个使用Facebook API的应用。我遇到的问题是我有一个专门用于保存不同人的一些信息的课程(这些信息之一是字符串形式的人的Facebook ID。)我的目标是从中访问特定对象这些人的ArrayList只知道与该对象关联的Facebook ID。有没有人有任何想法?
答案 0 :(得分:0)
您可以创建一个函数,如果它在数组中,则返回person对象,否则返回false:
var userArray = [{/* user1 */}, {id:'123',/* Brian */},{/* user3 */}];
function getUserById(id){
for(var i=0, l=userArray.length; i<l; i++){
if(ArrayList[i]['id'] == id) return userArray[i];
}
return false;
}
然后像这样使用它:
var Brian = getUserById('123');
答案 1 :(得分:0)
通过数字索引访问数组到数组中,并且数组针对索引从零开始的数据序列进行优化。这听起来并不像你真正想要的那样。
如果您希望能够通过Facebook ID进行索引,那么您可能希望使用对象(而不是数组)并将Facebook ID设置为您可以通过其设置和从对象获取项目的键。 / p>
var users = {};
function addUser(facebookID, properties) {
// save properties object for a given facebookID user
users[facebookID] = properties;
}
function getUser(facebookID) {
// return properties object for a given facebookID user
return users[facebookID];
}
答案 2 :(得分:0)
Javascript没有ArrayList类。如果您坚持使用数组中的对象,那么您可以做的最好的事情就是迭代数组,或者使用带有回调函数的array.filter: http://devdocs.io/javascript/global_objects/array/filter
答案 3 :(得分:0)
如果你仍然想要使用数组,你必须有这样的东西,尽管我喜欢mapApproach:
ArrayApproach:
facebookIds = ["123", "2413", "1234"];
facebookObjects = [ObjFor123, ObjFor2413, ObjFor1234];
function getObjectById(id) {
var index = facebookIds.indexOf(id);
if(index != -1) {
return facebookObjects[index];
}
}
MapApproach:
var facebookMap = {
"id1": Obj1,
"id2": Obj2
};
function getObjById(x) {
return facebookMap[x];
}
答案 4 :(得分:0)
您正在尝试在数组中搜索某个项目,如果该项目存在,则返回该项目。假设您的列表未排序,实现此目的的最简单方法是使用linear search:
function fetchItem(array, prop, value) {
for (var i = 0; i < array.length; ++i) {
if (array[i][prop] === value)
return array[i];
}
return undefined;
}
// search an array "userArray" for an item whose facebookId property is "12345"
fetchItem(userArray, facebookId, "12345"); // returns user object or undefined
如果您在阵列中存储了大量用户对象,这可能会很慢。如果您的对象出现在数组的最后,则该函数必须在返回结果之前检查数组中的每个项目。
最好将用户存储在Object
等数据结构中。您可以存储键/值对,其中键等于唯一标识符,如facebookId
,值是用户对象的其余部分:
var userCollection = {
"12345": { name: 'foo' },
"12346": { name: 'bar' },
"12347": { name: 'baz' }
};
假设您已经知道正在寻找其所有者的facebookId
,您可以直接检索用户对象,而无需搜索任何内容:
userCollection["12346"]; // { name: 'bar' }
Object
类比Array
更适合存储和访问无序集合。