Skip to content

Instantly share code, notes, and snippets.

@ClausClaus
Created March 15, 2019 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ClausClaus/87b5b55a3225b6a4e8e201dc646898cf to your computer and use it in GitHub Desktop.
Save ClausClaus/87b5b55a3225b6a4e8e201dc646898cf to your computer and use it in GitHub Desktop.
从多个对象中取出需要的属性值,隐式的判断ID是否相等
<!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