как использовать переменную в функции loDa sh - PullRequest
1 голос
/ 02 марта 2020

Добрый день,

вот моя схема данных:

длина данных может меняться в зависимости от запроса

var data = {
IP1: 1,2,3,4,5,6
IP2: 4,5,6,7,8,9
IP3: 1,7,8,5,9,6,3}

keys=Object.keys(data)

sum=[]
for (i=0;i<keys.length;i++){
k='o.'+keys[i]

sum.push(_.sumBy(data, function(o) { return k }))
}

Я работаю над Skywise / palantir в какой-то момент мне нужно суммировать все столбцы, используя функцию loDa sh sumBy

Мой вопрос: есть ли способ, чтобы o.key [i] была переменной в функции loda sh ?

Спасибо за вашу помощь.

С уважением

1 Ответ

0 голосов
/ 02 марта 2020

Если я вас правильно понимаю, вы пытаетесь получить суммы столбцов (например, 1, 4, 1).

Вы можете использовать loda sh для создания функции с _.flow(), которая принимает значения объекта (массивы), транспонирует их (строки в столбцы) с помощью _.unzip(), а затем суммирует каждое столбец, сопоставляя его с _.sum():

const { flow, values, unzip, map, sum } = _ 

const fn = flow(
  values, // get the values of the object - a list of arrays 
  unzip, // unzip to transpose the arrays to columns
  arrs => map(arrs, sum) // sum each column
)

const data = {
  IP1: [1, 2, 3, 4, 5, 6],
  IP2: [4, 5, 6, 7, 8, 9],
  IP3: [1, 7, 8, 5, 9, 6, 3]
}

const result = fn(data)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

И немного более чистая версия lodash / fp:

const { flow, values, unzip, map, sum } = _ 

const fn = flow(
  values, // get the values of the object - a list of arrays 
  unzip, // unzip to transpose the arrays to columns
  map(sum) // sum each column
)

const data = {
  IP1: [1, 2, 3, 4, 5, 6],
  IP2: [4, 5, 6, 7, 8, 9],
  IP3: [1, 7, 8, 5, 9, 6, 3]
}

const result = fn(data)

console.log(result)
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>
...