在Express中编辑全局数组

时间:2017-03-15 08:30:07

标签: node.js express

我想从app locals变量中更改数组中的一个项目,我不知道该怎么做

这是我设定为全球的

app.locals.products=[{name: 'a',url: '/a' },
    {name: 'b',url: '/b' },
    {name: 'c',url: '/c' },...

我想编辑它们并从路线设置活动产品并执行类似的操作

    products:[{name: 'a',url: '/a' active:true}],

但是,当我这样做时,它将删除所有其他项目,并仅设置我写的产品。有没有办法只编辑我需要的那个并保持其余的不变?

1 个答案:

答案 0 :(得分:2)

您可以使用数组查找功能查找products数组中的特定项目并进行编辑。

function setActive(name) {

  var element = products.find(function(product) {
    return product.name === name;
  });

  if (element) {
    element.active = true;
  }
}

此函数接受name变量,检查它是否存在于product数组中并将其设置为活动状态。如果不是,您可能想要抛出异常。

用法:

setActive('a');