迭代对象数组并获取每个对象的唯一值

时间:2021-04-03 12:47:19

标签: javascript vue.js object

我在 data() 中有这个变量:

jsonStatham: {
  "uniqueOne": {
    "field1": "",
    "field2": "",
    "field3": "",
    "field4": "",
    "field5": "",
    "freeTextArea": ""
  },
  "uniqueTwo": {
    "field1": "",
    "field2": "",
    "field3":"",
    "field4":"",
    "field5":"",
    "freeTextArea":""
  },
  "uniqueThree": {
    "field1": "",
    "field2": "",
    "freeTextArea": ""
  }
},

我想要的是检查此输入字段中是否有值:

<input type="text" name="platform" placeholder="Platform" id="platform" v-model="platform" required/>

正在匹配“jsonStatham”(uniqueOne/Two/Three)的其中一个键,然后将匹配键的键推送到数组中。所以如果输入 === uniqueOne,那么这个数组:

inputFields: [

],

看起来像这样:inputFields["field1","field2","field3","field4","field5"]

这就是我尝试过的:

appendFields() {

      for (const [key, value] of Object.entries(this.jsonStatham)) {
        if(this.brand === this.jsonStatham[key]){
          //console.log("Brand =>", this.brand)
        }
        //console.log(`${key}: ${value}`);
        this.inputFields.push({
          [key]:value
        })
      }
      //console.log("ALL input Fields: \n",this.inputFields)
    },

我在 inputFields 中得到的是“uniqueOne”、“uniqueTwo”、“uniqueThree”

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

  1. 条件:
if(Object.keys(this.jsonStatham).includes(this.brand) )

这将是 True 数组 ["uniqueOne","uniqueTwo","uniqueThree", ..etc] 将包含 this.brand

  1. 推送到数组:
this.inputFields.push(...Object.keys(value))

答案 1 :(得分:0)

if (this.jsonStatham.hasOwnProperty(this.brand)) {
  this.inputFields.push(...Object.keys(this.jsonStatham[this.brand]));
}