JS条件ES6地图

时间:2018-08-25 22:07:24

标签: javascript arrays

我们在这里找到了一些示例,这些示例返回带有条件的图元的ES6数组的映射,但是对于对象数组,我们需要相同的映射。

源数组具有topic.id,topic.name和topic.parent_id:

topics: [
  {id: 1, name: 'test_1', parent_id 0},
  {id: 2, name: 'test_2', parent_id 0},
  {id: 1, name: 'test_child_1', parent_id 1}
]

我们需要返回一个对象数组,其中topic_id现在是键“值”,而topic.name现在是键“标签”,并且如果该主题在值的开头附加了两个不间断空格.parent_id>0。因此对于上面的数据,我们想回来:

[
  {value: 1, label: 'test_1'},
  {value: 2, label: 'test_2'},
  {value: 3, label: '  test_child_1'}
]

我们已经尝试了很多IF,三进制(例如下面的IF),但是似乎并不能确定一个可行的语法。

 let test ="topics.map(topic => (
  {
    label: topic.parent_id > 0 : '  ' + topic.name ? topic.name,
    value: topic.id,
  } 
))"

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以通过以下方式使用地图功能:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="circle-plus closed">
  <div class="circle">
    <div class="horizontal"></div>
    <div class="vertical"></div>
  </div>
</div>

更新: 现在,我仔细看了一下,发现您在第三次操作中犯了一个错误。您颠倒了let test = topics.map(function(topic){ return { label:topic.parent_id > 0? '&nbsp;&nbsp;' + topic.name : topic.name, value: topic.id }; }); ?的位置。并且您添加了双引号,因此将其作为字符串读取。将其更新为此:

:

答案 1 :(得分:2)

这是一个简单的解决方案,您可以执行以下操作

var labelValues =topics.map((topic)=> ({
    label: topic.parent_id > 0 ? '  ' + topic.name : topic.name,
    value: topic.id 
}));