Array - daniel-qa/Vue GitHub Wiki

Array

Array 賦值

noticeForm.data.img = FakeData.value.image ? [FakeData.value.image] : [];

以確保 noticeForm.data.img 一定是陣列,即使 FakeData.value.image 是 null 或 undefined,也能避免錯誤。

some()

检查字符串数组中是否存在特定字符串

const fruits = ['apple', 'banana', 'cherry'];

const hasBanana = fruits.some((fruit) => fruit === 'banana');

console.log(hasBanana); // true,因为数组中存在 'banana'

检查对象数组中是否有某个条件

const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' },
];

const hasUserWithId2 = users.some((user) => user.id === 2);

console.log(hasUserWithId2); // true,因为有用户的 id 是 2

直接把值用 push 新增

const geo =[];

// 動態新增資料
listGeo.push({
  countryId: item.countryId,
  provinceId: null,
  cityId: item.cityId || null,
  type: item.type,
});

陣列的賦值

const listArea = [];   // 宣告空陣列
listArea.push(id);  //新增一個 id 字串

在原有資料加入 key value

  • 直接在 item 上新增键值对
 item["type"] = "1";
  • 與 Item 同層,充增鍵值
// 使用中介,增加欄位值 (key-value) 至 Item
const newItem = { item, "type": "1" };

// 将新对象推送到 column3Items
column3Items.value.push(newItem);

資料類型

由 Object {} 包起來的物件; 裡面包含複雜資料類型; 包含 Object, Array

[] 陣陣;代表裡面有許多相同類型的資料

{} 物件;代表裡面是多種複雜的集合

// 定義發送請求的參數
const requestData = ref({
    target: {
        area: ["areaid"],
        geo: [
            {
                countryId: "TW",
                provinceId: null,
                cityId: "30",
            },
        ],
        unit: ["1", "2"],
        school: ["habook", "hbgl"],
        tmid: ["1522758684", "1595321354"],
    },    
});
  • 給值
// 添加 target - area(假设 area 是预定义或动态获取的)
requestData.value.target = {
	area: selectedArea, // 确保 selectedArea 包含选中的区域值
	geo: selectedGeo || null,  // 示例:如果需要其他字段
	unit: selectedUnit || null,
	school: selectedSchool || null,
	tmid: selectedTmid || null,
};
// 僅設定 area
requestData.value.target = {
	area: selectedArea, // 確保 selectedArea 已正確設置值
};

上列等同於下面的寫法

requestData.value.target.area =selectedArea;

宣告結構的陣列

初始化資料:只有在需要特定結構時才加入空資料,否則建議初始化為空陣列。

const action = ref([
    {
        label: "",
        url: "",
    },
]);

這種宣告結構的方式,會多一筆空紀錄。

範例

// 定义按键数组
const action = ref([
  {
    label: "hiteachCC使用說明",
    url: "https://www.youtube.com",
  },
  {
    label: "官方網站",
    url: "https://www.example.com",
  },
]);

// 新增按鈕
const addAction = (label, url) => {
  if (label && url) {
    action.value.push({ label, url });
  } else {
    console.error("請提供按鈕名稱和網址!");
  }
};

// 刪除指定的按鈕
const removeAction = (index) => {
  if (index >= 0 && index < action.value.length) {
    action.value.splice(index, 1); // 根据索引删除
  } else {
    console.error("無效的索引!");
  }
};

// 刪除最後一個按鈕
const removeLastAction = () => {
  if (action.value.length > 0) {
    action.value.pop(); // 删除最后一个元素
  } else {
    console.error("沒有按鈕可以刪除!");
  }
};

// 示例调用
addAction("新按钮", "https://www.newlink.com"); // 增加一个新的按钮
removeAction(1); // 删除索引为1的按钮
removeLastAction(); // 删除最后一个按钮

push

    const addSchool = (school) => {
      // 添加新的学校
      items.value.push(school.name);
      ElMessage({
        message: `已加入 ${school.name}`,
        type: "success",
      });
    };
  • 增加多個數值
items.value.push({ name: school.name, count: school.count });

concat 方法

concat 是数组的方法,用于将一个或多个数组或值合并为一个新数组。它不会改变原数组,而是返回一个新的数组。

  • 语法
newArray = array1.concat(array2, array3, ..., value1, value2, ...);

array1:要合并的原始数组。 array2, array3, ..., value1, value2:要连接到原数组的数组或值。

ex1:

const array1 = [1, 2];
const array2 = [3, 4];
const array3 = [5, 6];

const result = array1.concat(array2, array3);

console.log(result); // 输出 [1, 2, 3, 4, 5, 6]

ex2:

const array1 = [1, 2];
const result = array1.concat(3, [4, 5]);

console.log(result); // 输出 [1, 2, 3, 4, 5]

reduce 方法

filter() 方法

filter() 方法会返回一个新的数组,而不会修改原数组。

filter() 方法期望回调函数返回一个布尔值。如果你不使用 return,回调函数默认返回 undefined,这会导致 filter() 方法无法正确筛选元素。

如果没有 return,回调函数不会返回任何明确的布尔值,filter() 无法正确判断该元素是否满足条件,因此返回一个空数组。

所以,return 是必要的,用来明确返回一个布尔值,以便 filter() 判断元素是否符合条件。

// 过滤学校列表
const filteredItems = currentSubItems.filter((item) => {
    return  item.name.toLowerCase().includes(query); // 判断 name 是否包含关键字
});

splice() 方法

splice() 用于添加、删除或替换数组中的元素,会直接修改原数组。

  • 語法
array.splice(start, deleteCount, item1, item2, ...)

start:

起始索引,从哪里开始操作。 如果为负值,从数组末尾开始计算。

deleteCount:

要删除的元素个数。 如果为 0,则不会删除任何元素。

item1, item2, ...:

要插入的新元素(可选)。

如果没有提供这些参数,splice 只会删除元素。

items.value.splice(index, 1)

index 是数组中要移除的元素的索引。

1 表示只移除一个元素。

这个方法会直接修改原数组。

  • 1 . 删除元素
const arr = [1, 2, 3, 4];
arr.splice(1, 2); // 从索引 1 开始删除 2 个元素
console.log(arr); // [1, 4]
  • 2 . 插入元素
const arr = [1, 4];
arr.splice(1, 0, 2, 3); // 从索引 1 开始,不删除元素,插入 2 和 3
console.log(arr); // [1, 2, 3, 4]
  • 3 . 替换元素
const arr = [1, 2, 4];
arr.splice(2, 1, 3); // 从索引 2 开始删除 1 个元素,并插入 3
console.log(arr); // [1, 2, 3]
  • slice() 方法

slice() 用于提取数组的一部分,返回一个新的数组,不会改变原数组。