0

listOfFriends我有一个包含对象的数组[{"name" : "fName lName", "uid" : "0102030405"}], ...

我想减小这个数组的大小,因为我只需要uids,所以我想制作另一个数组,只有uids

var listOfFriends, listOfFriendsUIDs;
//listOfFriends gets filled

for(var i = 0; i < listOfFriends.length; i++){
  listOfFriendsUIDs[i].uid = listOfFriends[i].uid;  // this line isn't working
  //listOfFriendsUIDs is still undefined untill the start of this loop

}
4

3 回答 3

4

您可以使用Array.prototype.mapID 创建新数组:

var listOfFriendsUIDs = listOfFriends.map(function(obj) { return obj.uid; });

检查浏览器兼容性并在需要时使用shim 。

演示:http: //jsfiddle.net/x3UkJ/

于 2013-04-03T14:42:13.767 回答
1

尝试使用投影方法.map()

var listOfFriendsUIDs = listOfFriends.map(function(f){ return f.uid;});
于 2013-04-03T14:43:56.523 回答
0

listOfFriendsUIDs[i]未定义,因此您无法访问其uid属性。您要么需要:

// creates an array of UID strings: ["0102030405", ""0102030405", ...]
listOfFriendsUIDs[i] = listOfFriends[i].uid;

或者

// creates an array of objects with a uid property: [{uid:"0102030405"}, ...]
listOfFriendsUIDs[i] = {}
listOfFriendsUIDs[i].uid = listOfFriends[i].uid;
于 2013-04-03T14:42:24.553 回答