2016-10-02 47 views
-4

我有一個數組,我想從某個beginIndex加入某個endIndex,並保持原樣。加入數組的一部分,並將其餘部分保留爲Javascript

例如,我有這樣的數組:

['first', 'second', '<error>', 'Can not parse the third element', '</error>', 'fourth', 'fifth'] 

我想join('\n')從索引2的元素,直到指數4。所以,我得到:

['first', 'second', '<error>\nCan not parse the third element\n</error>', 'fourth', 'fifth'] 

有什麼建議?

編輯:哇,感謝您的4個downvotes和2個關於這個無辜良好制定的問題的密切投票。是的,我找到了一些適用於循環的東西,但是我發現它很難看,而且我正在尋找更優雅的東西,我不知道拼接方法。感謝Soviut和Nina提供有趣的答案。希望其他具有相同問題的人也可以從中學習...

+5

我的建議是:「發表您嘗試在你的問題,說明在何處以及如何失敗「。你的嘗試做錯了什麼,他們做了什麼,他們不應該做什麼,他們做了什麼,他們應該做什麼?您的控制檯中是否有任何錯誤(大多數瀏覽器中的F12)?請在你的問題中發佈你的「* [mcve] *」。 –

+0

看來你可以做「獲得元素2到4的子陣列,加入它們,並用單一結果替換原來的元素2到4」。所以下一步就是打開文檔並找到實現這個功能的函數,然後將它們串聯起來,形成一個嘗試的解決方案。 – Jon

+0

@DavidThomas我覺得我的企圖只會給讀者帶來同樣問題的噪音。我正在使用for循環,這工作,之後,我嘗試了一下reduce方法,它的工作方式很好,但不像我認爲的那樣優雅。我不知道拼接方法,這似乎是解決這個問題最優雅的方法。 – Kasper

回答

1

你可以使用Array#splice

splice()方法通過去除現有元件和/或添加新元素改變陣列的內容。

var array = ['first', 'second', '<error>', 'Can not parse the third element', '</error>', 'fourth', 'fifth'], 
 
    beginIndex =2, 
 
    endIndex = 4; 
 

 
array.splice(beginIndex, 0, array.splice(beginIndex, endIndex - beginIndex + 1).join('\n')); 
 

 
console.log(array);

1

您可以使用slice獲取數組的子集,將它們加入,然後將splice這些值返回到數組中。剪接允許在插入時刪除/替換元素。

var logs = ['first', 'second', '<error>', 'Can not parse the third element', '</error>', 'fourth', 'fifth']; 
 

 
var startIndex = 2; 
 
var endIndex = 5; 
 

 
var slicedTokens = logs.slice(startIndex, 5); 
 
var joinedString = slicedTokens.join(''); 
 
var deleteCount = endIndex - startIndex; 
 

 
logs.splice(startIndex, deleteCount, joinedString); 
 

 
console.log(logs);

1

一個簡單的方法來做到這一點是: -

var a = ['first', 'second', '<error>', 'Can not parse the third element', '</error>', 'fourth', 'fifth']; 

var b = []; 
var startJoinIndex = 2; 
var endJoinIndex = 4; 
var joinedValue = ""; 
a.forEach(function(item, index){ 
    if (index >= startJoinIndex && index <= endJoinIndex){ 
    joinedValue += item; 
    if (index === endJoinIndex){ 
     b.push(joinedValue); 
    } 
    } else { 
    b.push(item); 
    } 
}); 

console.log(b); 
相關問題