javascript - 使函数从作为参数传入的数组中获取多个变量
问题描述
如何使函数从作为参数传入的数组中获取多个变量?
已编辑
例如:
实现这一点:
const inputObj = [
['Anna', 10, 'Monday'],
['Anna', 15, 'Wednesday'],
['Beatrice', 8, 'Monday'],
['Beatrice', 11, 'Wednesday'],
['Anna', 4, 'Wednesday'],
['Beatrice', 5, 'Monday'],
['Beatrice', 16, 'Monday']
]
// expected output:
const outputObj = [
[ 'Anna', 10, 'Monday' ],
[ 'Anna', 19, 'Wednesday' ],
[ 'Beatrice', 29, 'Monday' ],
[ 'Beatrice', 11, 'Wednesday' ]
]
const arr = [0, 2]
const someFunction = (obj, v, a) => {
const result = obj.reduce((acc, cur) => {
const key = `${cur[a[0]]}|${cur[a[1]]}`
if(!acc[key]) acc[key] = cur
else acc[key][1] += cur[v]
return acc
}, {})
return Object.values(result)
}
console.log(someFunction(inputObj, 1, arr))
有了这个:
const arr = [0, 2, 3, ...] // basically the array could contain any number of items.
const someFunction = (obj, v, objParams) => {
const result = obj.reduce((acc, cur) => {
const key = ???
...
}, {})
}
为了使函数可以重用并且它接受自定义大小的数组,检查数组中的列号是否相同,然后将传入的列的总和相加为v
?
如何从 objParams 中声明变量以达到与上面代码相同的结果?
v
另外中间怎么加cur
?
解决方案
假设 objParams 是一个未知大小的数组(本例中为字符串):
const objParams = ["c1", "c2", "c3"];
const key = objParams.join(']}|${cur[');
const built = '${cur[' + key + ']';
建成的是:
${cur[c1]}|${cur[c2]}|${cur[c3]
推荐阅读
- postgresql - PostgreSQL JSONB 列大小在优化后增加
- google-sheets - 简单的频率分布图或公式(谷歌表格)
- pyspark - 在 Spark Azure Databricks 中创建自定义进度条指示器
- adobe - 将变量传递给 jsx
- javascript - getElementsByClassName 返回 undefined 与 puppeteer
- java - Android:是否可以使用 setColorFilter 更改 ImageView 的背景颜色?
- php - 基于索引号的数组的PHP循环
- python - 将cygwin与python virtualenvwrapper一起使用?
- html - 使单选按钮文本更大
- amazon-web-services - 当这些属性在同一级别时,aws cli 查询多个属性