簡體   English   中英

Javascript:將字符串轉換為數組

[英]Javascript: converting string to an array

這是我的計算器項目的功能之一。 首先,我需要將輸入字符串轉換為數組,然后再進行操作。 (假設輸入現在只有數字和“+”號。

我的問題是,如何改進此代碼? 處理這個問題的其他方法是什么? (時間復雜度,干凈,更短的代碼......隨便)

 function convertArray(input) { let array = []; let num = ""; for (let i = 0; i < input.length; i++) { if (input.charAt(i) == '+') { array.push(input.charAt(i)); } else { do { num += input.charAt(i); i++; } while (i < input.length && input.charAt(i) !== '+'); array.push(num); num = ""; i--; } } return array; } console.log(convertArray("10+2+3000+70+1"));

你可以和一群人分開。 這也將組添加到數組中。

對於其他計算符號,您可以將它們添加到括號中。

 const convertArray = string => string.split(/([+])/); console.log(convertArray("10+2+3000+70+1"));

 const q = prompt('Sum?'); alert('Answer: ' + eval(q));

不建議使用 eval,但如果您只需要一個快速而骯臟的技巧,它就可以工作。 就個人而言,我會推薦一個庫,例如 Math.js,但任何一個都可以。

如果您真的需要為一個項目自己做這件事,我建議您查看這里的答案: 將字符串作為數學表達式在 JavaScript 中求值

希望你在任何你計划做的事情上取得成功。

似乎復雜性與您確定運算符的願望有關。 在您的代碼中,您只需將它們全部推送到數組中。 這樣做就像

 const re = /((\\d+)|([^\\d]+))/g const convertArray = str => { let match, arr=[]; while (match = re.exec(str)) { arr.push(match[1]) // here you can determine if you have an operator console.log(match[1],"Operator?",!/^\\d+$/.test(match[1])) } return arr } const str = "10+2+3000+70+1"; console.log(convertArray(str));

暫無
暫無

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

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