2013-04-03 48 views
0

我有一个包含[{"name" : "fName lName", "uid" : "0102030405"}], ...填写一个JavaScript数组与另一个JS数组

我要砍掉这个数组的大小对象的数组listOfFriends,因为我只需要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

阵列可以使用Array.prototype.map创建新的阵列出来的ID:

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

检查浏览器compatibility并在需要时使用shim

DEMO:http://jsfiddle.net/x3UkJ/

+0

.MAP将在不工作的循环? –

+0

@ScottSelby绝对是的。 – VisioN

+0

这是一些漂亮性感的代码:),仍在学习js,谢谢 –

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; 
1

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

var listOfFriendsUIDs = listOfFriends.map(function(f){ return f.uid;}); 
相关问题