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

Is there a nicer/elegant way to assign JavaScript split values to variables?

本文关键字:拆分 分配 变量 JavaScript 方式 更好 是否      更新时间:2023-09-26

感觉可能有更好的方法。

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

JavaScript 1.7新增功能-忽略某些返回值:

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

我只能想到:

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];

我认为最好不要重复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(":"));

(这当然只适用于全局变量,尽管在非全局作用域的局部对象上创建属性很容易)

您可以避免使用显式索引,而只是相应地排序声明。当然也可以用单个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();

使用一个漂亮的小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

use for loop

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

要删除数组,您可以尝试这样做:

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

别担心,我并不期待一个被接受的答案!:)我只是想从另一个角度看问题。