Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从json()对象访问键/值对?_Javascript_Angular_Typescript - Fatal编程技术网

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。我确实花时间测试了它,它对我有效。但看起来你已经找到了答案我有一个答案…所以不需要跟进。