Reactjs 使用箭头运算符并尝试按插入顺序推送项的数组?

Reactjs 使用箭头运算符并尝试按插入顺序推送项的数组?,reactjs,ecmascript-6,Reactjs,Ecmascript 6,basic=[['答案','投票']; (()=>props.poll.answers.map(ans=>basic.push([ans.answer,ans.voates]))() 在基本数组中插入的值是什么 插入的值包含在props.poll.answers(数组)中 按哪个顺序 无论道具、投票、答案的顺序如何 最后在map函数中表示的()的含义是什么。 ()=>表示一个函数,在本例中是一个匿名函数。结尾的括号表示这是一个要立即执行的函数 还有一些东西,basic是数组的数组。因此,为

basic=[['答案','投票'];
(()=>props.poll.answers.map(ans=>basic.push([ans.answer,ans.voates]))()
  • 在基本数组中插入的值是什么 插入的值包含在props.poll.answers(数组)中

  • 按哪个顺序 无论道具、投票、答案的顺序如何

    • 最后在map函数中表示的()的含义是什么。 ()=>表示一个函数,在本例中是一个匿名函数。结尾的括号表示这是一个要立即执行的函数

还有一些东西,basic是数组的数组。因此,为了保持相同的对象模式,您不希望推送{name:value},因为这将是一个对象。方括号表示一个数组。

好吧,让我们把这个问题分为几个部分,基本上是说“这段代码做什么?”,然后分别回答每个问题

首先,关于语法。所讨论的代码是所谓的,即我们定义函数(在本例中为),然后在同一行代码中调用它。也就是说,第二行可以简化为:

  props.poll.answers.map(ans => basic.push([ans.answer, ans.votes]));
i、 e.我们删除最后一个括号(函数调用)和箭头前面的括号,以及箭头本身(以便只保留函数体)

为了使原始代码更加清晰,我们还可以将其重写如下:

const lambda = () => props.poll.answers.map(ans => basic.push([ans.answer, ans.votes]));
lambda();
在这里,我们显式地将函数存储到变量中(这里的名称“lambda”是为了提醒我们这个函数实际上是的),然后使用变量名调用它

现在,回答你们的问题


“在基本数组中插入的值是什么?” 好的,让我们看看由
map
调用的代码:

ans => basic.push([ans.answer, ans.votes])
这里,变量
ans
来自我们映射的数组。假定
ans
是一个对象,它具有属性
answer
投票
。之后,这些属性被合并到两元素数组中,或者,如果您使用TypeScript,您可以使用以下语法将其称为元组。。这个数组作为一个整体被推入
basic
。例如,如果我们有以下
ans

ans = {answer: "Answer text", votes: 5};
在您的代码中创建的
basic
,推送后我们有以下内容:

basic === [['Answer', 'Votes'], ['Answer text', 5]]
正如您所看到的,插入到另一个数组中的数组没有坏处,它们可以按照您的意愿嵌套

“……按什么顺序?” 当任何值被推送到数组中时,它们都会按照被推的顺序保持在这里。
map
函数还迭代源数组。因此,
basic
数组中的元素的顺序将与
answers
的对应元素的顺序相同。考虑下面的例子:

props={
投票:{
答复:[
{答案:'答案1',投票:1},
{答复:'答复2',投票:20},
{答复:'答复1.5',投票数:2}
]
}
};
基本=[[答案','投票'];
(()=>props.poll.answers.map(ans=>basic.push([ans.answer,ans.voates]))();

console.log(基本)这段代码最好写成
basic=[['Answer','voates']].concat(props.poll.answers.map(ans=>[ans.Answer,ans.voates])