文檔:InputArrayOrString.note
D:\proj\brain\admin-antd-react\src\components\InputArrayOrString
```ts
import React, { useState, useEffect } from 'react';
import { Form, Input } from 'antd';
const InputArrayOrString = ({ value, onChange }) => {
const [inputValue, setInputValue] = useState('');
useEffect(() => {
// 如果傳入的value是數(shù)組,將數(shù)組轉換為逗號分隔的字符串
if (Array.isArray(value)) {
setInputValue(value.join(','));
} else {
// 否則,傳入的value是字符串,直接設置為inputValue
setInputValue(value);
}
}, [value]);
const handleInputChange = (e) => {
const newValue = e.target.value;
setInputValue(newValue);
// 判斷輸入的值是否包含逗號,如果包含則將其轉換為數(shù)組
if (newValue.includes(',')) {
// const newArray = newValue.split(',').map((item) => parseInt(item.trim(), 10));
const newArray = newValue.split(',')
onChange(newArray);
} else {
onChange(newValue);
}
};
return (
<Input value={inputValue} onChange={handleInputChange} />
);
};
export default InputArrayOrString;
import React from 'react';
import { Form, Button } from 'antd';
import InputArrayOrString from '@/components/InputArrayOrString';
// import InputArrayOrString from './InputArrayOrString';
// InputArrayOrString
const MyForm = () => {
const onFinish = (values) => {
console.log('Form values:', values);
};
const initialValues = {
myInput: [1, 1, 1, 1, 1, 1, 2, 2, 2], // 初始值為 [1, 1, 1, 1, 1, 1, 2, 2, 2]
};
// value={}
// onChange={}
return (
<Form onFinish={onFinish} initialValues={initialValues}>
<Form.Item name="myInput" label="My Input">
<InputArrayOrString
/>
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">Submit</Button>
</Form.Item>
</Form>
);
};
export default MyForm;
```
不是的。多維數(shù)組類似于表,可以按行優(yōu)先或者列優(yōu)先的排列,當做一維數(shù)組使用
1.常量數(shù)組就是常數(shù)組成的數(shù)組,可以直接嵌入公式,不需要單元格區(qū)域存儲;例如:{"a",1234;"b",true;"c","ExcelTip"},是一個3行2列的常量數(shù)組,可包含文本、數(shù)值、邏輯值等;
2.區(qū)域數(shù)組實際上是單元格區(qū)域,數(shù)據(jù)存儲在單元格中,公式必須引用單元格才能調用數(shù)據(jù);例如公式=SUMIF(A1:A10,A1:A10,B1:B10)中,是將區(qū)域數(shù)組A1:A10(實際就是單元格區(qū)域A1:A10)直接作為Sumif求和的“數(shù)組”條件,公式將返回10行1列的數(shù)組;
3.內存數(shù)組實際上包含常量數(shù)組,但它主要指某個公式的計算結果是數(shù)組,且做為整體嵌入其他公式中繼續(xù)參與計算;例如=SUMIF(A1:A10,A1:A10,B1:B10)得到的結果是內存數(shù)組,可以作為整體嵌入其他公式中繼續(xù)參與計算。下面給你附加介紹一個命名數(shù)組:命名數(shù)組,顧名思義,就是用名稱來定義一個上述三種數(shù)組,通常用于不直接接受常量數(shù)組的條件格式自定義公式和數(shù)據(jù)有效性(序列除外)中。例如新建一個包含3個sheet的工作簿Book1,按Ctrl+F3,定義一個名稱sheetnames=GET.WORKBOOK(1),則該名稱返回的是{"[Book1]Sheet1","[Book1]Sheet2","[Book1]Sheet3"}的數(shù)組。
List<List<string>> listMin=new List<List<string>>()
1. 定義方式不同:指針數(shù)組是一個元素為指針類型的數(shù)組,而數(shù)組指針是一個指向數(shù)組的指針。
2. 數(shù)據(jù)類型不同:指針數(shù)組中每個元素都是一個指針,而數(shù)組指針本身是一個指向特定類型數(shù)據(jù)的數(shù)組。
3. 訪問元素不同:在訪問指針數(shù)組時,需要首先訪問該元素所在的位置,然后使用間接引用操作符(*)來訪問該元素所指向的值;在訪問數(shù)組指針時,可以直接使用下標操作符[]訪問其所指向的數(shù)組中的元素。
4. 內存布局不同:對于指針數(shù)組,每個元素都是一個獨立的內存位置,其值存儲了相應對象或變量地址;而對于數(shù)組指針,它本身也是一個變量,并且存儲了整個數(shù)組的地址。
1 數(shù)組指針和指針數(shù)組都是指向數(shù)組的指針,但是它們的定義和用法有所不同。2 數(shù)組指針是一個指向數(shù)組的指針變量,它可以通過指針運算符(*)和下標運算符([])來訪問數(shù)組元素。例如,int (*p)[3]表示一個指向長度為3的int類型數(shù)組的指針。3 指針數(shù)組是一個數(shù)組,它的每個元素都是一個指針,每個指針可以指向不同類型的數(shù)據(jù)。例如,int *a[3]表示一個包含3個int類型指針的數(shù)組。4 因此,數(shù)組指針和指針數(shù)組的區(qū)別在于它們的定義和用法不同,前者是指向數(shù)組的指針變量,后者是一個數(shù)組,它的每個元素都是一個指針。
不影響。
因為,java中數(shù)組的長度不可以改變。
java中的數(shù)組的定義就是相同類型,固定長度的一組數(shù)據(jù),一旦被初始化,長度不可更改。如果對需要用的數(shù)組的長度不確定,有兩種解決辦法:
第一種是在數(shù)組初始化的時候長度申請的足夠大,這樣做會造成內存空間的浪費,一般不推薦使用。
第二種是用java中提供的集合的方式存儲數(shù)據(jù),如List,Set和Map類型的對象存儲數(shù)據(jù),一方面這些類型的對象的長度都是動態(tài)增長的,另一方面這些類中提供了很多便于操作數(shù)據(jù)的方法,因此在對所需存儲數(shù)據(jù)的多少不確定的時候,第二種方法比第一種方法更優(yōu)秀。
數(shù)組指針(也稱行指針)定義 int (*p)[n];()優(yōu)先級高,首先說明p是一個指針,指向一個整型的一維數(shù)組,這個一維數(shù)組的長度是n,也可以說是p的步長。也就是說執(zhí)行p+1時,p要跨過n個整型數(shù)據(jù)的長度。
如要將二維數(shù)組賦給一指針,應這樣賦值:int a[3][4];int (*p)[4]; //該語句是定義一個數(shù)組指針,指向含4個元素的一維數(shù)組。p=a; //將該二維數(shù)組的首地址賦給p,也就是a[0]或&a[0][0]p++; //該語句執(zhí)行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]
所以數(shù)組指針也稱指向一維數(shù)組的指針,亦稱行指針。
指針數(shù)組定義 int *p[n];[]優(yōu)先級高,先與p結合成為一個數(shù)組,再由int*說明這是一個整型指針數(shù)組,它有n個指針類型的數(shù)組元素。這里執(zhí)行p+1時,則p指向下一個數(shù)組元素,這樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指針變量可以用來存放變量地址。但可以這樣 *p=a; 這里*p表示指針數(shù)組第一個元素的值,a的首地址的值。如要將二維數(shù)組賦給一指針數(shù)組:int *p[3];int a[3][4];p++; //該語句表示p數(shù)組指向下一個數(shù)組元素。注:此數(shù)組每一個元素都是一個指針for(i=0;i<3;i++)p[i]=a[i]這里int *p[3] 表示一個一維數(shù)組內存放著三個指針變量,分別是p[0]、p[1]、p[2]所以要分別賦值。
這樣兩者的區(qū)別就豁然開朗了,數(shù)組指針只是一個指針變量,似乎是C語言里專門用來指向二維數(shù)組的,它占有內存中一個指針的存儲空間。指針數(shù)組是多個指針變量,以數(shù)組形式存在內存當中,占有多個指針的存儲空間。還需要說明的一點就是,同時用來指向二維數(shù)組時,其引用和用數(shù)組名引用都是一樣的。比如要表示數(shù)組中i行j列一個元素:*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]
優(yōu)先級:()>[]>*
區(qū)別在于,偽數(shù)組不具備真數(shù)組的屬性和方法,比如push、pop、splice等,它們的數(shù)據(jù)類型不相同。
真數(shù)組是Array,偽數(shù)組是Object。真數(shù)組的長度是可變的,而偽數(shù)組的長度不可變。
真數(shù)組可以訪問數(shù)組的方法,而偽數(shù)組不能直接訪問數(shù)組的方法 。
一、數(shù)組的運算
由于數(shù)組的構成元素包含數(shù)值、文本、邏輯值、錯誤值,因此數(shù)組繼承著各類數(shù)據(jù)的運算特特性(錯誤值除外),即數(shù)值型和邏輯型數(shù)組可以進行假發(fā)和乘法等常規(guī)的算數(shù)運算;文本型數(shù)值可以進行連接符運算。
對于運算數(shù)組進行運算是,Excel有如下限制。
要點1對于相同維度(方向)的一位數(shù)組運算,要求數(shù)組的尺寸必須一致,否則運算結果的部分數(shù)據(jù)返回#N/A錯誤。