最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3-reactive定義的對(duì)象數(shù)組如何賦值

 更新時(shí)間:2025年06月16日 09:20:14   作者:檸檬樹^-^  
這篇文章主要介紹了vue3-reactive定義的對(duì)象數(shù)組如何賦值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3-reactive定義的對(duì)象數(shù)組賦值

type childEditQosItem = {
objectName: string;
attribute: string;
type: string;
valueType: string;
value: string;
};
const ruleList = reactive<childEditQosItem>([
{ objectName: "", attribute: "", type: "", valueType: "", value: "" },
]);

const data = [
{ attribute: "2", type: "3", valueType: "4", value: "6" },
{ objectName: "7", attribute: "8", type: "9", valueType: "" },
];

data 數(shù)組中的元素補(bǔ)充完整并更新到 ruleList 中。

思路

  • 類型定義:和之前一樣,先定義了 childEditQosItem 類型,明確每個(gè)元素應(yīng)該包含的屬性。
  • 創(chuàng)建響應(yīng)式數(shù)組 ruleList:使用 reactive 函數(shù)創(chuàng)建響應(yīng)式數(shù)組并初始化了一個(gè)默認(rèn)元素。
  • 清空 ruleList:使用 splice 方法將 ruleList 中的元素清空,為后續(xù)添加處理后的數(shù)據(jù)做準(zhǔn)備。

使用 for...in 處理數(shù)據(jù)

  • 外層 for 循環(huán)遍歷 data 數(shù)組中的每個(gè)元素。
  • 對(duì)于每個(gè)元素,先創(chuàng)建一個(gè)默認(rèn)的 newItem 對(duì)象,其屬性都初始化為空字符串。
  • 內(nèi)層 for...in 循環(huán)遍歷當(dāng)前元素的每個(gè)屬性。使用 Object.prototype.hasOwnProperty.call 來確保只處理對(duì)象自身的屬性,避免處理原型鏈上的屬性。
  • 將當(dāng)前元素的屬性值賦值給 newItem 對(duì)應(yīng)的屬性。

更新 ruleList:將處理好的 newItem 添加到 ruleList 中。

const ruleList = reactive([
{ objectName: "", attribute: "", type: "", valueType: "", value: "" },
]);

const data = [
{ attribute: "2", type: "3", valueType: "4", value: "6" },
{ objectName: "7", attribute: "8", type: "9", valueType: "" },
];

// 清空 ruleList 原有的內(nèi)容
ruleList.length = 0;

// 遍歷 data 數(shù)組
for (let i = 0; i < data.length; i++) {
const newItem = {
objectName: "",
attribute: "",
type: "",
valueType: "",
value: ""
};
// 合并 data 中當(dāng)前項(xiàng)的屬性到新對(duì)象
for (const key in data[i]) {
if (data[i].hasOwnProperty(key)) {
newItem[key] = data[i][key];
}
}
ruleList.push(newItem);
}

console.log(ruleList);

這個(gè) TypeScript 錯(cuò)誤提示表明,你試圖使用一個(gè) string 類型的變量 key 來索引 newItem 對(duì)象,但 newItem 類型并沒有定義這樣的索引簽名。

要解決這個(gè)問題

你可以通過類型斷言或者使用類型守衛(wèi)來確保 keynewItem 對(duì)象的合法屬性名。

// 定義 childEditQosItem 類型
type childEditQosItem = {
objectName: string;
attribute: string;
type: string;
valueType: string;
value: string;
};

const ruleList = reactive<childEditQosItem[]>([
{ objectName: "", attribute: "", type: "", valueType: "", value: "" },
]);

const data = [
{ attribute: "2", type: "3", valueType: "4", value: "6" },
{ objectName: "7", attribute: "8", type: "9", valueType: "" },
];

// 清空 ruleList
ruleList.length = 0;

// 定義類型守衛(wèi)函數(shù)
function isValidKey(key: string): key is keyof childEditQosItem {
return ['objectName', 'attribute', 'type', 'valueType', 'value'].includes(key);
}

for (let i = 0; i < data.length; i++) {
const newItem: childEditQosItem = {
objectName: "",
attribute: "",
type: "",
valueType: "",
value: "",
};
for (const key in data[i]) {
if (data[i].hasOwnProperty(key) && isValidKey(key)) {
newItem[key] = data[i][key] || "";
}
}
ruleList.push(newItem);
}

console.log(ruleList);

isValidKey 函數(shù)是一個(gè)類型守衛(wèi),它接受一個(gè) string 類型的參數(shù) key,并檢查 key 是否是 childEditQosItem 類型的合法屬性名。如果是,則返回 true,并且 TypeScript 編譯器會(huì)將 key 的類型縮小為 keyof childEditQosItem。

for...in 循環(huán)中,使用 isValidKey(key) 作為類型守衛(wèi),確保只有合法的屬性名才能用于索引 newItem 對(duì)象。

其中

 newItem[key] = data[i][key] || "";

在賦值時(shí)使用 || "" 運(yùn)算符,若 data[i][key] 的值為 undefined 或者空字符串,就會(huì)將空字符串賦給 newItem[key],這樣就保證了賦值的類型是 string。

或者:

for (const key in data[i]) {
if (data[i].hasOwnProperty(key) && isValidKey(key)) {
const value = data[i][key];
if (value!== undefined) {
newItem[key] = value;
}
}
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue修改滾動(dòng)條樣式的方法

    vue修改滾動(dòng)條樣式的方法

    這篇文章主要介紹了vue修改滾動(dòng)條樣式,首先要知道,修改滾動(dòng)條樣式,利用偽元素-webkit-scrollbar。下面來看看文章內(nèi)容的具體實(shí)現(xiàn)吧
    2021-11-11
  • vue vxe-table 實(shí)現(xiàn)表格設(shè)置默認(rèn)行高同時(shí)又支持自定義行高的示例代碼

    vue vxe-table 實(shí)現(xiàn)表格設(shè)置默認(rèn)行高同時(shí)又支持自定義行高的示例代碼

    本文給大家介紹vue vxe-table如何實(shí)現(xiàn)表格設(shè)置默認(rèn)行高同時(shí)又支持自定義行高,首先將默認(rèn)行高通過css變量修改,然后再啟用自定義行高,就可以輕松實(shí)現(xiàn)這個(gè)功能了,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • Vue2中使用自定義指令實(shí)現(xiàn)el-table虛擬列表的代碼示例

    Vue2中使用自定義指令實(shí)現(xiàn)el-table虛擬列表的代碼示例

    在實(shí)際開發(fā)中,我們可能會(huì)面臨其他需求,例如在 el-table 中無法使用分頁(yè)技術(shù)的情況下展示海量數(shù)據(jù),這種情況下,頁(yè)面可能會(huì)出現(xiàn)卡頓,嚴(yán)重時(shí)甚至可能引發(fā)瀏覽器崩潰,所以針對(duì)這個(gè)問題本文給大家介紹了vue2中使用自定義指令實(shí)現(xiàn)el-table虛擬列表,需要的朋友可以參考下
    2025-01-01
  • vuex中能直接修改state嗎

    vuex中能直接修改state嗎

    當(dāng)我們使用vuex的時(shí)候,時(shí)不時(shí)能看到“更改Vuex中的store中的狀態(tài)唯一辦法就是提交mutations”,但是有沒有試想過,我們不提交mutations其實(shí)也能修改state的值?答案是可以的,下面通過本文介紹下vuex修改state值的方法,感興趣的朋友一起看看吧
    2022-11-11
  • VueUse使用及造輪子選擇對(duì)比示例詳解

    VueUse使用及造輪子選擇對(duì)比示例詳解

    這篇文章主要為大家介紹了VueUse使用及造輪子選擇對(duì)比示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證的流程

    Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證的流程

    這篇文章主要介紹了Vue?和?Django?實(shí)現(xiàn)?Token?身份驗(yàn)證?,Vue.js?和?Django?編寫的前后端項(xiàng)目中,實(shí)現(xiàn)了基于?Token?的身份驗(yàn)證機(jī)制,其他前后端框架的?Token?實(shí)現(xiàn)原理與本文一致,需要的朋友可以參考下
    2022-08-08
  • vue2.0 子組件改變props值,并向父組件傳值的方法

    vue2.0 子組件改變props值,并向父組件傳值的方法

    下面小編就為大家分享一篇vue2.0 子組件改變props值,并向父組件傳值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue復(fù)雜表格單元格合并根據(jù)數(shù)據(jù)動(dòng)態(tài)合并方式

    vue復(fù)雜表格單元格合并根據(jù)數(shù)據(jù)動(dòng)態(tài)合并方式

    這篇文章主要介紹了vue復(fù)雜表格單元格合并根據(jù)數(shù)據(jù)動(dòng)態(tài)合并方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue生成隨機(jī)驗(yàn)證碼的示例代碼

    vue生成隨機(jī)驗(yàn)證碼的示例代碼

    本篇文章主要介紹了vue生成隨機(jī)驗(yàn)證碼的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧‘
    2017-09-09
  • 前端部署踩坑實(shí)戰(zhàn)記錄(部署后404、頁(yè)面空白)

    前端部署踩坑實(shí)戰(zhàn)記錄(部署后404、頁(yè)面空白)

    Vue項(xiàng)目打包部署Nginx服務(wù)器后,刷新頁(yè)面后出現(xiàn)404的問題,下面這篇文章主要給大家介紹了關(guān)于前端部署踩坑的實(shí)戰(zhàn)記錄,文中包括部署后404、頁(yè)面空白等問題的解決辦法,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

建湖县| 昭苏县| 泰宁县| 保靖县| 阿瓦提县| 台南市| 兴海县| 长治市| 洪洞县| 邵东县| 抚州市| 洛南县| 石渠县| 陵川县| 汾西县| 安化县| 南涧| 楚雄市| 庆阳市| 东莞市| 亚东县| 兴城市| 绥芬河市| 连州市| 庐江县| 泰宁县| 丹江口市| 辛集市| 三江| 朝阳县| 巴林左旗| 枣阳市| 宁国市| 庆安县| 浮山县| 黄平县| 丰顺县| 湛江市| 长乐市| 策勒县| 上栗县|