javascript - 是否可以将字符串列表转换为参数的变量列表?

标签 javascript

我知道 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('; ');
}

最佳答案

其他答案是正确的,但只是为了明确显示参数链:

function one() {
    two.apply(this, arguments);
}

function two() {
    console.log(arguments);
}

one("one", "two", "three");

打印:

["one", "two", "three"]

关于javascript - 是否可以将字符串列表转换为参数的变量列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983978/

相关文章:

javascript - 关于 AngularJS $RouteParams

javascript - ui 路由器不显示模板

javascript - 从多个源异步更新 React 状态

javascript - 对 Ajax 加载的页面使用浏览器后退按钮?

javascript - 函数是对象吗?为什么 console.log 不显示可检查对象?

javascript - 为什么这个表达式在 JavaScript 中被评估为 "a"?

javascript - React js 性能工具插件抛出 "Cannot read property ' 未定义的计数”

javascript - 将 PNG 或 JPEG 用于带有 OpenLayers 的 map (缩放/缩放问题)

javascript - 使用基于 html id 的 JavaScript 循环

javascript - 无法在 jspdf 中使用 addHTML 保存 pdf 文件