reduce
— это метод массива в JavaScript, который используется для накопления всех элементов массива и в конечном итоге возврата одного значения. В качестве параметра она принимает функцию обратного вызова. Эта функция обратного вызова может принимать четыре параметра:
- Аккумулятор: Аккумулятор является результатом выполнения каждой функции обратного вызова. Он накапливает накопленное значение на каждой итерации.
- Текущий элемент: элемент массива, который в данный момент обрабатывается.
- Текущий индекс: индекс текущего элемента массива.
- Исходный массив:
reduce
Исходный массив вызова.
reduce
Существует две формы методов: одна принимает только функцию обратного вызова, а другая также может принимать начальное значение в качестве второго параметра.
Вот reduce
базовый пример использования:
const numbers = [1, 2, 3, 4, 5];
// 使用 reduce 对数组中的元素求和
const sum = numbers.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0); // 初始值为 0
console.log(sum); // 输出 15,因为 1 + 2 + 3 + 4 + 5 = 15
В этом примере мы используем для суммирования элементов массива reduce
. numbers
Начальное значение 0
передается в аккумулятор, а затем функция обратного вызова складывает аккумулятор и текущий элемент на каждой итерации, в результате чего получается окончательная сумма.
Вы также можете не указывать начальное значение, и в этом случае reduce
первый элемент массива будет использоваться в качестве начального значения по умолчанию, а итерация начнется со второго элемента. Если массив пуст и начальное значение не указано, будет выдана ошибка.
reduce
очень универсален, вы можете использовать его для выполнения различных операций накопления, таких как поиск максимального/минимального значения, объединение строк, вычисление средних значений и т. д. В зависимости от ваших потребностей вы можете написать соответствующую логику в функции обратного вызова для достижения необходимой функциональности.
PS: Ниже приведен метод записи, используемый в моем коде (вы можете узнать о моих собственных заметках на appsmitch):
const columns = inputData.fieldSource.reduce((prev:any,next:any,index:number)=>{
const {
shouId,type } = next
prev[shouId] = {
id:shouId,
label:shouId,
index:index,
columnType:type,
width:100,
}
return prev;
},{
}
)
这里 fieldSource格式为
fieldSource:[
{
shouId:'code',
type:'TEXTBOX'
},
{
shouId:'delect',
type:'TEXTBOX',
}
]
///
生成的结果为:
console.log(columns )
columns ={
code:{
id:'code',label:'code',index:0,columnType:'TEXTBOX',width:100},
delect:{
id:'delect',label:'delect',index:1,columnType:'TEXTBOX',width:100}
}