我知道javascript函數可以接受任意數量的參數,可以通過arguments[i]
訪問。我想知道是否可以將該數組轉換爲單獨的參數以發送到另一個函數,該函數也處理變量列表的參數。是否可以將字符串列表轉換爲變量列表的參數?
我對字符串類的基本格式類似於string.format()在.Net中的工作方式。
String.prototype.format = String.prototype.format = function() {
var s = this,
i = arguments.length;
while (i--) {
s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
}
return s;
};
我有另一個功能,需要一個javascript對象,併發送屬性來處理成一個字符串。這些屬性由調用函數設置。這是我試圖獲得的用法的一個例子。我只是簡單地將屬性作爲單個參數傳遞給上面的函數。關於如何實現這個的任何想法?
function doMything(){
var myData = GetMyDataFromSomething(); // returns a javascript array of objects
var myMessageFormat1 = 'Person with ID {0} name is {1} {2}';
var myPropertyList1 = ['UserID', 'FirstName', 'LastName']
var finishedStrings1 = formatTheString(myData, myMessageFormat1, myPropertyList1);
// ex. Person with ID 45 name is Jake Gyllenhal; Person with ID 46 name is Bob Barker
var myMessageFormat2 = '{0} is from {1}, {2}';
var myPropertyList2 = ['FirstName', 'City', 'State']
var finishedStrings2 = formatTheString(myData, myMessageFormat2, myPropertyList2);
// ex. Jake is from Phoenix, AZ; Bob is from San Diego, CA
}
function formatTheString(data, formatString, propertyList){
var myStrings = [];
data.forEach(function(item){
myStrings.push(item.format(propertyList)); // this doesn't work because the object is passed as a single argument
};
return myStrings.join('; ');
}
'anotherfunction.apply(context,arguments);'---這是你想要的嗎? – zerkms
「」.format很快就會出現,我會用不同的名字...... – dandavis
@dandavis好點。我將重新命名爲formatText,直到字符串格式化標準化。 – Sinaesthetic