मेरे पास मेरे Vue उदाहरण में आइटम के नाम के साथ एक वस्तु है

<script>
export default {
  data() {
    return {
      selected: "",
      items: {
        item1: [{ selected: "", inputType: "", inputTarget: "" }],
        item2: [{ selected: "", inputType: "", inputTarget: "" }]
      },
      textarea: ""
    };
  },
  methods: {
    selectboxAction(index) {
      this.items.item1.forEach(val => {
        if (val.selected.toLowerCase() === "file") {
          this.$refs.inputData[index].type = "file";
        } else {
          this.$refs.inputData[index].type = "text";
        }
      });
    }
  }
};
</script>

मैं इसकी एक सरणी कैसे ला सकता हूं, मैं प्रत्येक आइटम पर कुछ शर्त रखना चाहता हूं, लेकिन इसमें 2 से अधिक आइटम हो सकते हैं, शायद भविष्य में यह 100 तक पहुंच जाए

जैसा कि आप SelectboxAction विधि में देख सकते हैं, मैं केवल एक आइटम लाने में सक्षम था जो इस मामले में आइटम 1 है

मैं वस्तुओं से सभी सरणियाँ कैसे ला सकता हूँ, न कि केवल एक item1

0
Mohammad 15 फरवरी 2021, 17:07
2
यदि आप ऑब्जेक्ट्स की सभी नेस्टेड सरणी चाहते हैं, तो आप बस Object.values(this.items) developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
 – 
Terry
15 फरवरी 2021, 17:15
this.items.item1.forEach(...); => for (let key in this.items) { this.items[key].forEach(...); }, उदा. wandbox.org/permlink/ZM707NdQVKE9iJAX
 – 
Thomas Sablik
15 फरवरी 2021, 17:22

3 जवाब

सबसे बढ़िया उत्तर

मेरा सुझाव है कि आप एक कम्प्यूटेड गेट्टर का उपयोग करके अपने डेटा को प्रारूपित करें और अन्य की तरह Object.keys का उपयोग करें सुझाव दिया।

get itemsArray() {
  return Object.keys(this.items).map((key) =>
    return this.items[key];
  });
}
2
Mike 15 फरवरी 2021, 20:16

अपने 'आइटम' गुणों को 'आइटम 1', 'आइटम 2', आदि नाम देने के बजाय, यह बेहतर होगा कि 'आइटम' को एक सरणी बनाएं और प्रत्येक 'आइटम' ऑब्जेक्ट में 'आईडी' प्रॉपर्टी जोड़ें:

  data() {
    return {
      selected: "",
      items: [
        { id: 1, selected: "", inputType: "", inputTarget: "" },
        { id: 2, selected: "", inputType: "", inputTarget: "" }
      ],
      textarea: ""
    };
  },
1
Tim 15 फरवरी 2021, 18:26

आप कुछ ऐसा कर सकते हैं

 methods: {
    selectboxAction(index) {
      Object.keys(this.items).forEach(val => {
        this.items[val].forEach(item => {
        if (item.selected.toLowerCase() === "file") {
          this.$refs.inputData[index].type = "file";
        } else {
          this.$refs.inputData[index].type = "text";
        }
       });
      });
    }
  }
1
Amaarrockz 15 फरवरी 2021, 20:03