javascript - 使用 ES6 映射从反应道具构造数组
问题描述
我想以这种形式构造一个数组:
droppableIds = {
droppable1: 'list1',
droppable2: 'list2',
droppable3: 'list3'
}
目前它是硬编码的,但我想抽象它来处理不同数量的列表。我已经做到了这一点,但我被正确的语法绊倒了:
droppableIds = this.props.boxes.map(function(index) {
const n = '' + index; //convert to string
return droppable + n + ':' + 'list' + n
});
props.boxes 看起来像这样
console.log('this.props.boxes: ', this.props.boxes, typeof this.props.boxes, Array.isArray(this.props.boxes));
返回:
this.props.boxes: Array(3) object true Array(3)
console.log(this.props.boxes)
0: {title: "Soft Targets", group: "1"}
1: {title: "Hard Targets", group: "2"}
2: {title: "Start ", group: "0"}
解决方案
使用 ES6 完成的操作如下所示:
var boxes = [{
title: "Soft Targets",
group: 1
},
{
title: "Hard Targets",
group: 2
},
{
title: "Start",
group: 0
}
]
var droppableIds = boxes.map((x, i) => ({ [`droppable${i+1}`]: x }))
console.log(droppableIds)
不确定它的确切目的。最初我以为你想列出实际的属性等。在任何一种情况下
boxes.map((x, i) => ({ [`droppable${i+1}`] : x }))
应该通过以下方式为您做什么:
- 使用带有箭头函数的 ES6 映射,函数
.map((x, i) =>
中x
的下一项和i
当前索引在哪里 - 使用模板文字,因为您想要的结果从 1 开始,所以
droppable${i+1}
我们使用 1i
droppable${i+1}
用 [] 表示法 [ ]组成最终的返回对象
推荐阅读
- sql - PL SQL 过程不引发异常 no_data_found
- sql - 我在哪里可以在查询中放置“str”或“inst”?
- python-3.x - AttributeError:“元组”对象没有属性“asjson”
- r - 创建返回行名和最大值的函数
- python-3.x - 给定 RGB,如何在颜色栏中获取值?
- python - 如何制作一个函数来检查与 Python 中的哪个功能相关的项目?
- angular - 部署到 Firebase 后访问 Neo4J 端点时出现不安全的 WebSocket 连接
- python - Speech_Recognition 在计算机扬声器上使用 python - OSError: [Errno -9998] Invalid number of channels
- c++ - 指向结构的指针向量的元素具有相同的地址
- ionic4 - TypeError:无法读取 *ngif 上未定义的属性“toUpperCase”-离子 4