Javascript 如何访问函数返回的数组中的数据?

Javascript 如何访问函数返回的数组中的数据?,javascript,Javascript,我有一个函数,它返回一个包含数组的值,数组中有一个对象data,我想访问它的值 现在,我正在做的是 let budgets = await this.getReferenced(wipDocStore, facebookAdData, 'budget') budgets = budgets[0].data 但是,我不确定这是一种整洁的方式还是人们通常做的事情 由于不熟悉JavaScript,我认为类似这样的代码相当于上面的代码 let budgets = await this.getR

我有一个函数,它返回一个包含数组的值,数组中有一个对象data,我想访问它的值

现在,我正在做的是

let budgets = await this.getReferenced(wipDocStore, facebookAdData, 'budget')
    budgets = budgets[0].data
但是,我不确定这是一种整洁的方式还是人们通常做的事情

由于不熟悉JavaScript,我认为类似这样的代码相当于上面的代码

let budgets = await this.getReference(DocStore, AdData, 'budget')[0].data
let budgets = await this.getReference(DocStore, AdData, 'budget')[0].data
但事实并非如此(为什么?)。我可以做的另一件事是直接返回
getReference
函数中的相关数据,但由于这是一个可重用的函数,所以我并不总是希望数据位于数组的第0位

一般来说,有经验的程序员也会将上述代码分成两部分

let budgets = await this.getReference(DocStore, AdData, 'budget')
    budgets = budgets[0].data
如果他们不能更改
这个.getReference
函数?还有,为什么这不起作用


想想模糊性。您是在等待
ing
this.getReferenced(…)
,还是
this….data
?要直接取消对结果的引用,需要使用括号将其清除:

let budgets = (await this.getReference(DocStore, AdData, 'budget'))[0].data;

这是否真的比分成两行更具可读性,由你自己决定。

想想模糊性。您是在等待
ing
this.getReferenced(…)
,还是
this….data
?要直接取消对结果的引用,需要使用括号将其清除:

let budgets = (await this.getReference(DocStore, AdData, 'budget'))[0].data;
这是否真的比分成两行更易读,由你自己决定。

你可以这样做

let budgets = (await this.getReference(DocStore, AdData, 'budget'))[0].data;
但如果您只需要属性
数据
,则这是另一个选项:

let {data} = (await this.getReference(DocStore, AdData, 'budget'))[0]
数据
括在括号中意味着您只想获取名为
数据
的属性

但为了让它在我看来更具可读性,这将是最好的选择:

let budgets = await this.getReference(DocStore, AdData, 'budget');
let {data} = budgets[0];
你可以

let budgets = (await this.getReference(DocStore, AdData, 'budget'))[0].data;
但如果您只需要属性
数据
,则这是另一个选项:

let {data} = (await this.getReference(DocStore, AdData, 'budget'))[0]
数据
括在括号中意味着您只想获取名为
数据
的属性

但为了让它在我看来更具可读性,这将是最好的选择:

let budgets = await this.getReference(DocStore, AdData, 'budget');
let {data} = budgets[0];

忘掉你认为你想学习的关于“巧妙技巧”的任何东西

  • 不要仅仅为了在下一行将变量重新分配给其他完全不同类型的变量而声明变量。这就是代码气味,在像TypeScript这样的语言中,这是一个很大的禁忌,因为它破坏了类型安全性,也使引擎更难优化
  • 如果你在阅读语句时遇到困难,那是因为它需要被分解成更简单的语句,而不是浓缩成更小、更难阅读的语句
  • 考虑到这一点,考虑以下内容:

    const reference = await this.getReference(DocStore, AdData, 'budget')
    const budgets = reference[0].data
    
    这没有含糊不清的地方,它清楚地传达了正在一步一步地做什么。
    等待
    引用,然后从引用数组中的第一个条目获取数据。此外,有一个声明是很好的,因为您可以立即得出结论,在阅读代码时,这些值永远不会被重新分配


    这也有利于优化,因为使用常量引用可以减少在基础引擎中取消绑定其值的调用量,因为在其生命周期内,它将保持相同的类型和相同的引用。

    忘记您认为想要了解的关于“整洁技巧”的内容

  • 不要仅仅为了在下一行将变量重新分配给其他完全不同类型的变量而声明变量。这就是代码气味,在像TypeScript这样的语言中,这是一个很大的禁忌,因为它破坏了类型安全性,也使引擎更难优化
  • 如果你在阅读语句时遇到困难,那是因为它需要被分解成更简单的语句,而不是浓缩成更小、更难阅读的语句
  • 考虑到这一点,考虑以下内容:

    const reference = await this.getReference(DocStore, AdData, 'budget')
    const budgets = reference[0].data
    
    这没有含糊不清的地方,它清楚地传达了正在一步一步地做什么。
    等待
    引用,然后从引用数组中的第一个条目获取数据。此外,有一个声明是很好的,因为您可以立即得出结论,在阅读代码时,这些值永远不会被重新分配


    这也有利于优化,因为使用常量引用可以减少在基础引擎中取消绑定其值的调用量,因为在其生命周期内,它将保持相同的类型和相同的引用。

    如果您查看:

    您将看到await关键字将等待承诺完成或拒绝。或者,如果您没有通过承诺,请立即返回值

    因此有两种选择:传递一个承诺或一个值作为表达式,因为wait需要一个表达式

    在这里:

    let budgets = await this.getReference(DocStore, AdData, 'budget')[0].data
    
    由于它需要一个表达式,将首先计算该表达式,因此返回值未定义,因为您正在访问索引0处的函数


    正如规则所述,如果您将一个值传递给wait关键字,它将立即返回该值

    如果您查看:

    您将看到await关键字将等待承诺完成或拒绝。或者,如果您没有通过承诺,请立即返回值

    因此有两种选择:传递一个承诺或一个值作为表达式,因为wait需要一个表达式

    在这里:

    let budgets = await this.getReference(DocStore, AdData, 'budget')[0].data
    
    由于它需要一个表达式,将首先计算该表达式,因此返回值未定义,因为您正在访问索引0处的函数


    正如规则所述,如果您将一个值传递给wait关键字,它将立即返回该值

    这可能是一个优先问题。是
    (等待此操作。getReference(DocStore,AdData,'budget'))[0]。数据
    有效的JavaScript语法?或者,解构:
    let[{data:budgets}]=等待此操作。getReference(DocStore,AdData,'budget')
    可能是优先问题。是
    (等待此.getReference(DocStore,AdData,'budget'))[0]。数据
    有效的JavaScript语法