“但我總是把數字翻倍。所以[1,1,2,2,3,3 ......]你怎么能這樣做?我很期待答案。” 連續一個數字, for 回圈很好。但是我該如何處理雙數呢?
uj5u.com熱心網友回復:
要將陣列設為 N,請使用:
let N = 10;
Array.from(Array(N).keys())
要將任何陣列中的每個值加倍:
[...yourArray.map(n => [n, n])].flat()
所以,你的解決方案:
let n = 10;
const a = [...Array.from(Array(n).keys()).map(k => [k, k])].flat()
console.log(a)
讓它從 開始0,而不是1,相應地改變映射:
let n = 10;
const a = [
...Array.from(Array(n).keys())
.map(k => [k 1, k 1])
].flat()
console.log(a)
可以說,最干凈的解決方案:
function doubleArrayTo(n) {
const a = [];
for (i = 1; i <= n; i ) {
a.push(i, i);
}
return a;
}
console.log(doubleArrayTo(10))
出于好奇,我測驗了它們的性能。不出所料,for回圈勝過傳播語法:
顯示代碼片段
function doubleFor(n) {
const a = [];
for (i = 1; i <= n; i ) {
a.push(i, i);
}
return a;
}
function doubleSpread(n) {
return [
...Array.from(Array(n).keys())
.map(k => [k 1, k 1])
].flat()
}
function run_test(fn, value) {
const t0 = performance.now();
fn(value);
return performance.now() - t0;
}
[1e4, 1e5, 1e6, 1e7].map(value => {
console.log(
`(${value}): for => ${
run_test(doubleFor, value)
} | spread => ${
run_test(doubleSpread, value)
}`);
});
uj5u.com熱心網友回復:
遵循此代碼
var array = [];
for(int i = 0;i <= 10;i ) {
array.push(i);
array.push(i);//again
}
var array = [];
for (let i = 0; i <= 10; i ) {
array.push(i,i);
}
console.log(array);
編輯
您可以為 array.push(i,i,i,....) 使用多輸入
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383697.html
標籤:javascript 查询 循环 for循环
