Javascript 如何从json()对象访问键/值对?
我正在调用一个外部服务,得到返回的域对象,如下所示:Javascript 如何从json()对象访问键/值对?,javascript,angular,typescript,Javascript,Angular,Typescript,我正在调用一个外部服务,得到返回的域对象,如下所示: var domainObject = responseObject.json(); 1: "Bob Smith" 2: "Jane Doe" 3: "Bill Jones" <div> <div *ngFor="let user of users"> User Name: {{user.value}} <br> </div> </div&
var domainObject = responseObject.json();
1: "Bob Smith"
2: "Jane Doe"
3: "Bill Jones"
<div>
<div *ngFor="let user of users">
User Name: {{user.value}}
<br>
</div>
</div>
这会将响应对象转换为js对象。这样我就可以很容易地访问这个对象上的属性
var users = domainObject.Users
用户是键/值对的集合,如下所示:
var domainObject = responseObject.json();
1: "Bob Smith"
2: "Jane Doe"
3: "Bill Jones"
<div>
<div *ngFor="let user of users">
User Name: {{user.value}}
<br>
</div>
</div>
但CDT将用户显示为对象类型,而用户[0]返回未定义。那么,如何获得集合中第一项的句柄呢?我假设需要某种类型的类型转换,但不确定应该如何进行
更新
以下是我访问这些值的一种方法:
//get first user key
Object.keys(responseObject.json().Users)[0]
//get first user value
Object.values(responseObject.json().Users)[0]
但我需要通过ng2进行数据绑定,所以我希望有一种更简单的方法,比如:
var domainObject = responseObject.json();
1: "Bob Smith"
2: "Jane Doe"
3: "Bill Jones"
<div>
<div *ngFor="let user of users">
User Name: {{user.value}}
<br>
</div>
</div>
用户名:{{User.value}
也许我应该在我的ng2组件中创建一个转换函数,在设置数据绑定变量之前将对象转换为我需要的对象?如果您的初始对象只是一个普通对象,您如何知道它已排序。属性成员未排序,即:循环顺序也不保证。我将用户名提取到一个数组中,并按第二个单词对该数组进行排序。这应该有效(只要姓氏是第二个单词,并且只有单个空格用作分隔符)
var l=[];
for(用户中的变量x){
push.l(用户[x]);
}
var l1=l.sort((a,b)=>返回a.split(“”[1])如果您的初始对象只是一个普通对象,您如何知道它已排序。属性成员未排序,即:循环顺序也不保证。我会将用户名提取到一个数组中,并按第二个单词对该数组进行排序。这应该可以工作(只要姓氏是第二个单词,并且只有单个空格用作分隔符)
var l=[];
for(用户中的变量x){
push.l(用户[x]);
}
var l1=l.sort((a,b)=>返回a.split(“”[1]这个怎么样:
let user= this.users.find(() => true)
这应该返回“第一个”值。这个值怎么样:
let user= this.users.find(() => true)
这将返回“第一个”答案。更新后的答案
所以在浏览了一些文档之后,我发现了“newish”Object.entries()
javascript函数..非常酷
无论如何,试试看。我不好意思说我没有时间测试它,但它应该让你朝着正确的方向前进
usersArray = []
// Turn Users object into array of [key, value] sub arrays.
userPairs = Object.entries(users);
// Add the users back into an array in the original order.
for (i=0; i < userPairs; i++) {
usersArray.push(_.find(userPairs, function(userPair) { return userPair[0] == i }))
}
更新的答案
所以在浏览了一些文档之后,我发现了“newish”Object.entries()
javascript函数..非常酷
无论如何,试试看。我不好意思说我没有时间测试它,但它应该让你朝着正确的方向前进
usersArray = []
// Turn Users object into array of [key, value] sub arrays.
userPairs = Object.entries(users);
// Add the users back into an array in the original order.
for (i=0; i < userPairs; i++) {
usersArray.push(_.find(userPairs, function(userPair) { return userPair[0] == i }))
}
您是否尝试过用户['1']
?Javascript对象不是本质上有序的,那么“第一个”是什么意思物品?@Lixus-我可以通过你提到的特定值访问物品。我应该使用id,如123、456、789等。基本上id可以是任何东西,我的目标只是访问收藏中的第一件物品。詹姆斯-我只是想访问收藏中的第一件物品。我不在乎具体的物品是什么essed.只是尝试提取值,这种类型的操作通常会在编码为用户时完成[0]什么是CDT?console.log(users)显示什么?CDT=“Chrome Dev Tools”。控制台显示一个对象,其中包含一组用户键/值对。您是否尝试过用户['1']
?Javascript对象本身并不是有序的,那么“第一个”是什么意思呢物品?@Lixus-我可以通过你提到的特定值访问物品。我应该使用id,如123、456、789等。基本上id可以是任何东西,我的目标只是访问收藏中的第一件物品。詹姆斯-我只是想访问收藏中的第一件物品。我不在乎具体的物品是什么essed.只是尝试提取值,这种类型的操作通常会以用户身份编码[0]什么是CDT?console.log(users)显示什么?CDT=“Chrome Dev Tools。”控制台显示了一个包含用户键/值对集合的对象是否有箭头功能或某种类型的快捷方式?我可以通过CDT手表执行什么?是否有箭头功能或某种类型的快捷方式?我可以通过CDT手表执行什么?谢谢josh。这似乎是一个很好的快捷方式。不幸的是ely,我需要维护用户b/c的顺序,这些值按用户姓氏排序。例如:[{456:“Jack Smith”}{123:“Bill Watson”}]。因此,很难在客户端求助。我用一个返回键值对数组的函数更新了我的帖子。从那里,您应该能够使用每个键值对数组上的正确索引对其重新排序。是的,这将很容易为我提供此场景数组中的第一项:Object.entries(users)[0]谢谢josh。这似乎是一个很好的快捷方式。不幸的是,我需要维护用户的顺序b/c值按用户姓氏排序。例如:[{456:“Jack Smith”}{123:“Bill Watson”}]。因此,很难在客户端求助。我用一个返回键值对数组的函数更新了我的帖子。从那里,您应该能够使用每个键值对数组上的正确索引对其重新排序。是的,这将很容易为我提供此场景数组中的第一项:Object.entries(users)[0]谢谢deb,但我尝试了你的示例,它返回未定义:\hmm。我确实花了时间测试了它,它对我有效。但看起来你已经找到了答案…所以不需要继续。谢谢deb,但我尝试了你的示例,它返回未定义:\hmm。我确实花时间测试了它,它对我有效。但看起来你已经找到了答案我有一个答案…所以不需要跟进。