试图返回给定名称的所有键值,但没有任何结果。 我是新来的...
window.location.href = 'gonative://contacts/getAll?callback=contacts_callback';
function contacts_callback(data) {
var obj = JSON.stringify(data);
var obj = JSON.parse(obj);
var givenName = obj.contacts[0].givenName;
var keys = Object.keys(obj.contacts.givenName);
document.getElementById("demo").innerHTML = keys;
}
答案 0 :(得分:1)
假设obj.contacts
是对象的数组,每个对象都具有givenName
属性
由于obj.contacts
是一个数组,所以它本身不大可能拥有givenName
属性(它可以,但是您不会通过JSON来获取它)
var keys = Object.keys(obj.contacts.givenName);
与
相同var keys = Object.keys(undefined);
此时,您应该在浏览器开发者工具控制台中出现错误
您将需要按以下方式使用Array#map
函数
function contacts_callback(obj) {
var givenNames = obj.contacts.map(({givenName}) => givenName);
document.getElementById("demo").innerHTML = givenNames;
}
注意
function contacts_callback(data) {
var obj = JSON.stringify(data);
var obj = JSON.parse(obj);
除了两次声明同一变量(obj)的明显错误(尽管不打扰JavaScript)外,代码与以下代码相同:
function contacts_callback(obj) {
注意:但是,如果函数中的代码要使
obj
中的任何值发生突变,那么,如果您不想更改传入的对象,则应使用原始代码