Created
March 15, 2019 14:21
-
-
Save ClausClaus/87b5b55a3225b6a4e8e201dc646898cf to your computer and use it in GitHub Desktop.
从多个对象中取出需要的属性值,隐式的判断ID是否相等
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title></title> | |
</head> | |
<body></body> | |
<script type="text/javascript"> | |
/* 无需显式的比较ID是否相等实现数据的对应格式化 */ | |
var friends = { items: [{ user_id: 1 }] } | |
var users = { items: [{ user_id: 1, nickname: 'itchin' }] } | |
var identities = { items: [{ user_id: 1, desc: '老师' }] } | |
var map_users = {} | |
var map_idt = {} | |
/* 1.0 先不管ID是否相等,直接循环数据将想要的数据拿出来存在对象当中 */ | |
/* 2.0 需要将后面要拿来做比较的ID作为对象的键名存在 */ | |
for (var i = 0; i < users.items.length; ++i) { | |
var uid = users.items[i]['user_id'] | |
map_users[uid] = users.items[i]['nickname'] | |
} | |
for (var i = 0; i < identities.items.length; ++i) { | |
var uid = identities.items[i]['user_id'] | |
map_idt[uid] = identities.items[i]['desc'] | |
} | |
console.log('map_users', map_users) | |
console.log('map_idt', map_idt) | |
/* 3.0 在最后的循环当中,将ID放到变量中,使用in操作符判断对象是否包含对应这个ID的键名 */ | |
/* 4.0 包含的话,则使用当前对象[你所需要的键名] = 对象[当前循环对象的ID] 取出属性值 */ | |
/* 5.0 当前循环到的对象[你所需要的键名] = 对象[当前循环到的对象的ID] 这一步就能实现隐式的ID判断*/ | |
for (var i = 0; i < friends.items.length; ++i) { | |
var uid = friends.items[i]['user_id'] | |
if (uid in map_users) { | |
friends.items[i]['nickname'] = map_users[uid] | |
} else { | |
friends.items[i]['nickname'] = '' | |
} | |
if (uid in map_idt) { | |
friends.items[i]['desc'] = map_idt[uid] | |
} else { | |
friends.items[i]['desc'] = '' | |
} | |
map_users[uid] = identities.items[i]['desc'] | |
} | |
for (var i = 0; i < friends.items.length; ++i) { | |
alert( | |
friends.items[i]['user_id'] + | |
' ' + | |
friends.items[i]['nickname'] + | |
' ' + | |
friends.items[i]['desc'] | |
) | |
} | |
</script> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment