簡體   English   中英

用連續數字填充數組

[英]Fill an array with consecutive numbers

我有一個看起來像這樣的數組: [[3, Apple], [4, Banana], [7, Orange], [9, Pear]]

現在我想添加從 1 到 10 的所有缺失數字,並在示例中有水果的地方添加空條目,這樣我就有:

[
  [1, ],
  [2, ],
  [3, Apple],
  [4, Banana],
  [5, ],
  [6, ],
  [7, Orange],
  [8, ],
  [9, Pear]
  [10, ]
]

我會分享我迄今為止嘗試過的東西,但我真的一開始就被困住了。 有誰知道如何做到這一點?

您可以首先創建一個僅包含索引的數組,然后遍歷您的數據以填充輸入中的缺失值。

 const data = [[3, "Apple"], [4, "Banana"], [7, "Orange"], [9, "Pear"]] const result = data.reduce((result, [id, val]) => { result[id - 1].push(val); return result; }, Array.from({length: 10}, (_, i)=> [i + 1])) console.log(result);

這里 reduce function 的第二個參數是一個長度為 10 的數組,用 1 個元素 arrays 填充,其中元素是索引 + 1。

第一個參數是在輸入數據的每個元素上調用的 function,它修改了第二個參數。

let result = []
let fruits = [[3, 'Apple'], [4, 'Banana'], [7, 'Orange'], [9, 'Pear']]

let fruitsObject = Object.fromEntries(fruits)

for (let i = 1; i<=10; i++){


    result.push(fruitsObject[i] ? [i, fruitsObject[i]] : [i]) 
}

console.log(result)

一種過度工程的方式。 不要對我這么苛刻。

 const sourceArr = [[3, 'Apple'], [4, 'Banana'], [7, 'Orange'], [9, 'Pear']]; const sourceObj = Object.fromEntries(sourceArr); const nullArr = [...Array(10).keys()].map(i => [i+1]); const nullObj = Object.fromEntries(nullArr); const unionObj = {...nullObj, ...sourceObj }; const pairs = Object.entries(unionObj) const result = pairs.map(pair => pair.filter(e => e)); console.log(result);
 .as-console-wrapper{min-height: 100%;important: top: 0}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM