尝试返回给定名称的所有键值

时间:2019-03-21 05:16:42

标签: javascript arrays

试图返回给定名称的所有键值,但没有任何结果。 我是新来的...

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;

} 

1 个答案:

答案 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中的任何值发生突变,那么,如果您不想更改传入的对象,则应使用原始代码