2017-04-05 55 views
1

我有一個數組如何根據字符串的長度動態修改數組中的值?

passcodeArray: [null, null, null, null], 

和可變

passcode: '', 

和我想要的陣列的指數表現動態基於密碼

對於實例的長度時,

passcode.length === 2 

passcodeArray: [true, true, true, null], 

當密碼的長度縮短爲1時,陣列需要更新到

passcodeArray: [true, true, null, null], 

這是我迄今所做的,我想了一個辦法,包括我的渲染功能

裏面的一些邏輯
renderPasscodeIndicator() { 
let views = [] 
let passcodeArray = this.state.passcodeArray; 
let passcodeLength = this.state.passcode.length; 

passcodeArray.forEach((item, index) => { 
    views.push(
    { 
     ...passcodeArray[index] === null ? 
     <View key={index} style={[styles.passcodeIndicator]} /> : 
     <View key={index} style={[styles.passcodeIndicator, 
    styles.passcodeEntered]} /> 
     } 
    ) 
    }); 
    return views; 
    } 
+0

爲什麼你不使用for循環? 例如,你總是想推4個項目的意見,然後迭代4 +檢查是否我passcodeLength – MarcelD

回答

0

答案利奧提供有一定的幫助,但它不會實時更新的陣列。

所以,我決定把我在大學裏學到的知識用得很好。

這是我在一些好時間後得到的。

我使用堆棧的概念,我想要實現的只是比較堆棧長度和循環,以便可以更新視圖。

renderPasscodeIndicator() { 
let views = [] 
let passcodeLength = this.state.passcode.length; 

let localStack = [] 
for (var i=0; i<passcodeLength; i++) { 
    localStack.push('x') 
} 

for (var j=0; j<4; j++) { 
    views.push({ 
    ...localStack.length > j ? 
    <View key={j} style={[styles.passcodeIndicator, styles.passcodeEntered]} /> : 
    <View key={j} style={[styles.passcodeIndicator]} /> 
    }) 
} 

    return views; 
} 
3

使用Array.fill()和執行passcodeArray.fill(true, 0, passcode.length);

這裏是一個工作示例

const passcode = 'test'; 
 
const passcodeArray = [null, null, null, null, null, null, null]; 
 

 
const result = passcodeArray.fill(true, 0, passcode.length); 
 

 
console.log(result);

+0

嗨,array.fill只適用於操作是靜態的。例如,我有4位數字,用戶有2個密碼的密鑰,並且他刪除了一個密碼,所以堆棧中的密碼變成了一個,它不更新結果數組。 –

相關問題