是否有更好/更优雅的方法将JavaScript分割值分配给变量?

时间:2011-12-14 11:26:52

标签: javascript split

感觉可能有更好的方式。

var values = resp.split(':');
var delta = values[0]; var newvalue = values[1]; var admin = values[2];

7 个答案:

答案 0 :(得分:3)

我只能想到:

var values = resp.split(':');
var delta = values[0], 
    newvalue = values[1],
    admin = values[2];

或作为lonesomeday建议:

var values = resp.split(':'),
    delta = values[0],
    newvalue = values[1],
    admin = values[2];

答案 1 :(得分:3)

New in JavaScript 1.7 - Ignoring some returned values

var [delta, newvalue, admin] = resp.split(':');

答案 2 :(得分:2)

在我看来,不重复var关键字会更好。所以:

var values   = resp.split(':'),
    delta    = values[0],
    newvalue = values[1],
    admin    = values[2];

(有或没有逗号后的换行符,有或没有对齐等号。)

但是除此之外别无他法。

除非你愿意使用像这样的辅助函数做一些愚蠢的

function assignFromArray(vars, vals){
  for (var i=0; i<vars.length; i++)
     window[vars[i]] = vals[i];
}

assignFromArray(["delta","newValue","admin"], resp.split(":"));

(当然这只适用于全局变量,尽管在非全局范围内为某些本地对象创建属性非常容易。)

答案 3 :(得分:2)

您可以避免使用显式索引,只需相应地对声明进行排序。当然也可以使用单个var关键字。

更改和扩展更容易,因为您可能希望以数组中的外观顺序获得声明。

var values = resp.split(':');
var delta    = values.shift(); 
var newvalue = values.shift();
var admin    = values.shift();

只有一个声明:

var values = resp.split(':'),
    delta    = values.shift(), 
    newvalue = values.shift(),
    admin    = values.shift();

答案 4 :(得分:1)

使用一个漂亮的小assign()函数将值与新对象中的键相关联。然后,返回对象:

var assign = function(values, keys) {
    var i, vmax, kmax, output = {};
    for(i=0, vmax=values.length, kmax=keys.length; i<vmax && i<kmax; i++) {
        output[keys[i]] = values[i];
    }

    return output;
};

var result = assign(["bar","beer"], ["foo","free"]);

console.log(result);
// returns { "foo" : "bar", "free" : "beer" } accessed as result.foo and result.free

答案 5 :(得分:0)

用于循环

var values = resp.split(':');

for(var i=0; i<values.length; i++) {
    var value = values[i];
    alert(i =") "+value);
}

答案 6 :(得分:0)

要摆脱阵列,你可以尝试这样的事情:

var delta = resp.substring(0, resp.indexOf(':')),
    newvalue = resp.substring(resp.indexOf(':') + 1, resp.lastIndexOf(':')),
    admin = resp.substring(resp.lastIndexOf(':') + 1, resp.length);

别担心,我不期待接受的答案! :)只是试图提出另一种看待事物的方式。