如何从字符串中获取带数字的数组

时间:2014-08-16 15:22:52

标签: javascript

一些不同格式的数组。

var string = "A,B,C,D";

输出应为:

drp1: {A:-1,B:-2,C:-3,D:-4}

我无法弄清楚如何使用JavaScipt获取此类格式。

4 个答案:

答案 0 :(得分:2)

var letters = string.split(',');
var drp1 = {};
for (var i = 0; i < letters.length; i++) {
    drp1[letters[i]] = -1 - i;
}

答案 1 :(得分:0)

var string = "A,B,C,D";
var res = {};
string.split(',').forEach(function(e, i) {
  res[e] = - (i + 1);
});
console.log(res);//prints {A: -1, B: -2, C: -3, D: -4}

答案 2 :(得分:0)

您可以使用Array.map(请参阅MDN

var obj = {};
'A,B,C,D'.split(',').map(function (v, i) {this[a] = -(i+1);}, obj);

答案 3 :(得分:0)

简单的解决方案是使用split将字符串转换为数组,然后使用reduce以您想要的形式构造对象:

var string = "A,B,C,D"
var drp1 = string.split(',').reduce(function(o,x,i){
    o[x] = -1 - i; 
    return o; 
}, {});

请注意,reduce是在ECMAScript 5.1中引入的,因此它可能无法在旧版浏览器中使用。如果这是一个问题,请使用链接文档中描述的polyfill技术,或使用 Barmar 的答案显示的简单for - 循环。