2017-07-15 38 views
1
dft=["t", "h", "i", "s", "I", "s", "S", "p", "i", "n", "a", "l", "T", "a", "p"]; 
ans=[4, 6, 12, -1]; 
for(x=0;x<ans-1;x++){ 
dft.splice(ans[x],0,"-");} 
return dft; 

我試圖返回一個數組返回拼接陣列放置到使用索引除了-1指數俺們陣列中的DFT陣列。 [「t」,「h」,「i」,「s」,「I」,「s」,「S」,「p」,「i」,「n」,「一」, 「L」, 「T」, 「A」, 「p」]我如何使用多個指標從不同陣列

this is the codepen i am working on

回答

1

首先,它沒有做任何事情,因爲你的循環結束條件應該檢查​​迴路參數xans陣列的長度,即x < ans.length -1。其次,由於splice正在改變陣列,您ans指數將是不正確插入第一個連字符後,那麼你應該這樣做以相反的順序,像這樣:

dft = ["t", "h", "i", "s", "I", "s", "S", "p", "i", "n", "a", "l", "T", "a", "p"]; 
 
ans = [4, 6, 12, -1]; 
 

 
for (x = ans.length - 2; x >= 0; x--) { 
 
    dft.splice(ans[x], 0, "-"); 
 
} 
 

 
console.log(dft);

我們開始在數組的末尾,這將是ans.length - 1,除了你想跳過最後一個元素,所以我們從ans.length - 2開始。請記住,雖然這這假定最後一個元素應該被忽略

0

你可以用Array#reduce達到你想要的結果。

let dft = ["t", "h", "i", "s", "I", "s", "S", "p", "i", "n", "a", "l", "T", "a", "p"]; 
 
let ans = [4, 6, 12, -1]; 
 
let res = dft.reduce((s,a,i) => { 
 
    (ans.indexOf(i) > -1) ? s.push(a, '-') : s.push(a); 
 
    return s; 
 
}, []); 
 

 
console.log(res);

0

您需要索引數組進行排序,並以相反的順序,否則它會改變其他元素的索引做。

var dft = ["t", "h", "i", "s", "I", "s", "S", "p", "i", "n", "a", "l", "T", "a", "p"], 
 
    ans = [4, 6, 12, -1]; 
 

 
// sor the array to place - at the last higher index first 
 
ans.sort(function(a, b) { 
 
    return a - b; 
 
}); 
 
// get array length 
 
var x = ans.length; 
 
// iterate upto index reach to 0 or reaching to -1 
 
while (x-- && ans[x] > -1) { 
 
    dft.splice(ans[x], 0, "-"); 
 
} 
 

 
console.log(dft);

0

數組沒有一個數字原始的,所以你希望你的循環條件來讀取X < ans.length。

你的索引也需要ANS [X] + X,因爲每個接頭()由1

增加陣列的長度單獨這些變化應完成你的既定目標。不過我還要補充:

故意
  • 你應該聲明變量,而不是使用隱含的全局變量。

  • 您可以使用forEach()方法替換您的for循環,這可以使您的意圖更清晰。

  • 您可能想要圍繞術語和運算符進行間隔,這也有助於可讀性。

0

只是爲了保持完整性,與Array#reduceRight

var array = ["t", "h", "i", "s", "I", "s", "S", "p", "i", "n", "a", "l", "T", "a", "p"], 
 
    indices = [4, 6, 12, -1], 
 
    result = indices.reduceRight((r, i) => (~i && r.splice(i, 0, '-'), r), array); 
 

 
console.log(result.join(''));

的解決方案