我有一組看起來像這樣的對[[x,y], [x,y] ... ]。我想將它格式化為一個物件,其中的值是 x 和 y 值的陣列,就像這樣{keys: [x1, x2, x3 ...], values: [y1, y2, y3 ... ]}。
是否有任何陣列/物件操作可以在不遍歷原始串列的情況下完成此操作?
uj5u.com熱心網友回復:
建立在pilchard's answer之上,我會將陣列轉換為 Map,然后獲取 Map 的鍵和值。我會使用 Map 而不是物件,因為物件的鍵總是字串,如果值是整數,物件也將按它們的值排序。Map 將保留原始型別,并且不會重新排序它們。
const input = [[3, 300], [4, 200], [1, 100]];
const map = new Map(input);
const result = { keys: [...map.keys()], values: [...map.values()] };
console.log(result);
將相同結構轉換為物件的示例:
const input = [[3, 300], [4, 200], [1, 100]];
const obj = Object.fromEntries(input);
const result = { keys: Object.keys(obj), values: Object.values(obj) };
console.log(result);
uj5u.com熱心網友回復:
該程序是迭代的,但您可以使用現有Object方法將其隱藏:Object.fromEntries(), Object.keys(),Object.values()
const input = [['a', 1], ['b', 2], ['c', 3]];
const obj = Object.fromEntries(input);
const result = { keys: Object.keys(obj), values: Object.values(obj) };
console.log(result);
Ori Drori使用Map的細化不僅對數值而且對任何型別都更健壯。
const input = [[new Date(), { y: 1 }], [new Date(), { y: 2 }], [new Date(), { y: 3 }]];
const map = new Map(input);
const result = { keys: [...map.keys()], values: [...map.values()] };
console.log(result);
console.log(result.keys[0].valueOf());
uj5u.com熱心網友回復:
沒有留給失敗者的空間,但只是另一種方式
const input = [[3, 300], [4, 200], [1, 100]];
const result = { keys: Array.from(input, x => x[0]), values: Array.from(input, x => x[1]) };
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334119.html
標籤:javascript 数组 目的
上一篇:如何比較保留鍵的陣列值?
