Javascript 如何在对象数组中挑出一个项,然后遍历其余项?

Javascript 如何在对象数组中挑出一个项,然后遍历其余项?,javascript,meteor,Javascript,Meteor,目标:最后,我想显示数组中的每个对象,但我想挑出其中的一个(第一个或随机的),这样它就有了与组中其他对象不同的类 问题:每一个都会遍历所有内容,不做任何事情with保存整个内容。什么只有一件事 我正在使用的页面/路线订阅了一个大项目,其中包含如下内容: "colors": [ { "shortName": "blue", "trueName": "Sky Blue" }, { "shortName": "red", "trueName": "Blood Red" }, {

目标:最后,我想显示数组中的每个对象,但我想挑出其中的一个(第一个或随机的),这样它就有了与组中其他对象不同的类

问题:
每一个
都会遍历所有内容,不做任何事情
with
保存整个内容。什么只有一件事

我正在使用的页面/路线订阅了一个大项目,其中包含如下内容:

"colors": [
    { "shortName": "blue", "trueName": "Sky Blue" },
    { "shortName": "red", "trueName": "Blood Red" },
    { "shortName": "white", "trueName": "Crystal White" }
  ]
我想在页面上显示它们中的每一个,我现在按照常规方式执行此操作:

{{#each colors}}
  <div class="{{shortName}} hidden">{{trueName}}</div>
{{/each}}
{{{#每种颜色}
{{trueName}}
{{/每个}}
现在,我想一次只显示一种颜色,我想通过将类“hidden”添加到除一种以外的所有颜色来实现这一点。哪一个被挑出来并不重要,重要的是有些东西被挑出来了

问题是,不同的项目有不同的颜色,所以我不能在循环外设置例如
white
,也不能将类
hidden
添加到循环中<代码>白色可能不存在。此外,如果我这样做,它会添加两次
white


像往常一样,我觉得这件事简单得可笑,但我正在努力。有人能帮忙吗?

您可以使用if/else块以两种方式之一处理集合中的每个元素,即显示或隐藏它

{{#each colors}}
{{#if shortName===selected_color}}
  <div class="{{shortName}}">{{trueName}}</div>
{{else}}
  <div class="{{shortName}} hidden">{{trueName}}</div>
{{/if}}
{{/each}}
{{{#每种颜色}
{{{#如果shortName==所选颜色}
{{trueName}}
{{else}
{{trueName}}
{{/if}
{{/每个}}
通过在单个元素中将if/else移动到div的选项中,可以减少重复性


Meteor通常也提供jQuery,您可以使用它来挑出一组元素,并将隐藏应用于除一个之外的所有元素。

那么应该选择什么颜色?呢?jQuery的问题是,我还需要对象中的数据来对“蓝色”、“红色”或“白色”进行其他处理或者一个包含其中一种颜色的变量。但我不知道这些颜色是否可用。这就是问题所在。啊,然后您需要编写一个函数,生成一个选项列表,可能需要使用
Collection.find
和一些处理。也许这是一个新问题。