Javascript создает пары массивов для списка ключевых индексов - PullRequest
0 голосов
/ 25 ноября 2018

enter image description here

У меня есть список пар массивов, который выглядит следующим образом:

0: [0, "535222325"]
1: [1, "346362534"]
2: [0, "534534646"]
3: [1, "745354367"]
    ^ <--- Index for array where to append value

Как я могу преобразовать это по первому значению, которое является ключом индекса длясписки выглядят как показано ниже

0: ["535222325","534534646"]
1: ["346362534","745354367"]
^ <--- Unique index found from array above

Или как добавить в ключ, когда в цикле найдено значение с соответствующим индексом

Пример моего сценария:

for(var u = 0; u < Object.keys(freshData).length; u++) {
    tag[u].Index <-- This I want to use as a key, whenever new unique match appears
    tag[u].Value <-- This I want to add in to array of that key
} 

Извинитеза крайне плохое объяснение.Цель состоит в том, чтобы просто создавать списки по уникальным ключам, которые находятся в цикле for.

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Вы можете использовать функцию Array.reduce для создания желаемого объекта, как показано ниже.

var ar = [
  [0, "535222325"],
  [1, "346362534"],
  [0, "534534646"],
  [1, "745354367"]
]
var res = ar.reduce((mem, [first, last]) => ({ ...mem,
  [first]: [...mem[first] || [], last]
}), {});
console.log(res)
0 голосов
/ 25 ноября 2018

Использование reduce:

var arr = [
  [0, "535222325"],
  [1, "346362534"],
  [0, "534534646"],
  [1, "745354367"]
];

var obj = arr.reduce((r, [key, val]) => (r[key] = (r[key]||[]).concat([val])) && r, {});

console.log(obj);
0 голосов
/ 25 ноября 2018

Array.prototype.reduce на помощь:

const data = [
  [0, "535222325"],
  [1, "346362534"],
  [0, "534534646"],
  [1, "745354367"]
]

const groupKVPairs = (pairs, container = {}) => pairs.reduce(
  (acc, [key, value]) => {
    const group = acc[key]
    if (group !== undefined) group.push(value)
    else acc[key] = [value]
    return acc
  },
  container
)

console.log(groupKVPairs(data, []))
// output -> [["535222325", "534534646"], ["346362534", "745354367"]]

console.log(groupKVPairs(data, {}))
// output -> { "0": ["535222325", "534534646"], "1": ["346362534", "745354367"]}

console.log(groupKVPairs(data))
// output -> { "0": ["535222325", "534534646"], "1": ["346362534", "745354367"]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...