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])