获取 JSON 列的数组并检查重复项/VueJS

Get array of JSON column and check on duplicates / VueJS

我有一个包含许多不同列的 JSON 文件,如下所示(我使用的是 BootstrapVue)。

我想要获得一个包含一列的数组,并且我想根据重复项对其进行过滤。

我的 JSON 文件:

[
    { "Number": 111, "Input1": "Good morning", "Input2": "Test1" },
    { "Number": 222, "Input1": "Hello", "Input2": "Test2" },
    { "Number": 333, "Input1": "Good morning", "Input2": "Test2" },
    { "Number": 444, "Input1": "Ciao", "Input2": "Test2" },
    { "Number": 555, "Input1": "Hey", "Input2": "Test2" },
    { "Number": 666, "Input1": "Hey", "Input2": "Test2" }
]

我尝试过滤第 2 列 (Input1) 并检查重复项 - 因此最终数组应如下所示:

data():{
  return {
    Input1 = [{text: 'Good morning'}, {text: 'Hello'}, {text: 'Ciao'}, {text: 'Hey'}]
  }
}

我需要它,因为它用于 b-form-select 字段。

使其成为计算的 属性,循环遍历所有值,仅采用 Input1 值,然后过滤重复项,最后映射所有值以具有正确的格式。

类似于:

data: function(){
  return {
    selected: null,
    the_json: [
      { "Number": 111, "Input1": "Good morning", "Input2": "Test1" },
      { "Number": 222, "Input1": "Hello", "Input2": "Test2" },
      { "Number": 333, "Input1": "Good morning", "Input2": "Test2" },
      { "Number": 444, "Input1": "Ciao", "Input2": "Test2" },
      { "Number": 555, "Input1": "Hey", "Input2": "Test2" },
      { "Number": 666, "Input1": "Hey", "Input2": "Test2" }
    ]
  };
},
computed: {
  filtered_from_json: function() {
    let arr = this.the_json.map((v) => v.Input1); // Take only the `Input1` value
    return arr
      .filter((v, idx) => arr.indexOf(v) == idx) // Discard values that are present already (= lower index)
      .map((v) => { return {text: v, value: v}; }); // Transform value into object with property `text` of value
  }
},

use像这样:<b-form-select v-model="selected" :options="filtered_from_json"></b-form-select>