如何添加带有下划线 js 的计算属性

How to add a computed property with underscore js?

本文关键字:js 下划线 计算 属性 何添加 添加      更新时间:2023-09-26

我们需要向对象数组添加一个额外的属性。

数组:

var data = [
    {
        event:'event 1',
        status:'Upcoming'
    }
    {
        event:'event 2',
        status:'Completed'
    }
    {
        event:'event 3',
        status:'Canceled'
    }
    ...
]

为了根据其值为状态标签提供不同的颜色,我们希望将数组转换为以下内容:

var result = [
    {
        event:'event 1',
        status:'Upcoming',
        statusCss:'label-success'
    }
    {
        event:'event 2',
        status:'Completed',
        statusCss:'label-info'
    }
    {
        event:'event 3',
        status:'Canceled',
        statusCss:'label-warning'
    }
    ...
]

出一个JavaScript for循环很容易做到这一点:

                for (var i = 0; i < data.length; i++) {
                    var t = data[i];
                    if (t.status === 'Upcoming') t.statusCss = "label-success";
                    if (t.status === 'Canceled') t.statusCss = "label-warning";
                    if (t.status === 'Completed') t.statusCss = "label-info";
                    result.push(t);
                }

但是,下划线中有什么.js可以用更少的代码处理这种转换吗?

是的。

你可以使用地图。Map 循环访问集合,并允许您修改集合中的项并将这些项返回到新集合。

data = _.map(data, function(val) {
  if (val.status === 'Upcoming') val.statusCss = "label-success";
  if (val.status === 'Canceled') val.statusCss = "label-warning";
  if (val.status === 'Completed') val.statusCss = "label-info";
  return val;
});

这将继续修改数据,以便数据包含与以前相同的对象列表,但具有新属性