0

我有一个对象,我试图获取每个键的最后一个值并将其放入另一个对象中。

var setA = {
    'a':'001, 007, 101',
    'b':'052, 004, 006, 005',
    'c':'003, 002, 001'
}

我想要做的是得到最后一个这样的:

var setB = {
    'a':'101',
    'b':'005',
    'c':'001'
}

我怎么能做到这一点?

4

5 回答 5

4

一个循环?

var setB = {}
for (var o in setA) {
  var s = setA[o].split(', '),
      x = s[s.length - 1]
  setB[o] = x
}
于 2012-07-13T23:50:48.547 回答
4

为什么不只是:

var setB = {
    'a':setA.a.split(',').pop().trim(),
    'b':setA.b.split(',').pop().trim(),
    'c':setA.c.split(',').pop().trim()
}

JS 小提琴演示

实际上,这会获取从变量 in setA.a(等等......)返回的值,将该字符串在,字符处拆分为一个数组,弹出该数组的最后一个值并从中修剪空格。

当我记得可以将字符串视为字符数组时,从jbabey的回答中提出了以下内容:

var setA = {
    'a': '001, 007, 101',
    'b': '052, 004, 006, 005',
    'c': '003, 002, 001'
},
    setB = {
    'a': setA.a.slice(-3),
    'b': setA.b.slice(-3),
    'c': setA.c.slice(-3)
}

console.log(setB);​

JS 小提琴演示

参考:

于 2012-07-13T23:51:03.703 回答
2

您可以为此使用正则表达式

var setB = {
    'a':setA.a.match(/(\d+)$/)[1],
    'b':setA.b.match(/(\d+)$/)[1],
    'c':setA.c.match(/(\d+)$/)[1]
}

/(\d+)$/将匹配字符串中的最后一位数字

于 2012-07-13T23:48:24.120 回答
2

如果你知道你总是想要字符串的最后 3 个字符,你可以使用substring

var setA = {
    'a':'001, 007, 101',
    'b':'052, 004, 006, 005',
    'c':'003, 002, 001'
}

var setB = {};

for (var item in setA) {
    setB[item] = setA[item].substring(setA[item].length-3);
}

http://jsfiddle.net/X6J2p/

于 2012-07-13T23:53:25.400 回答
1

这段代码可以解决问题:

var setB={},temp,prop;
for(prop in setA){
    temp=setA[prop].split(', ');
    temp=temp[temp.length-1];
    setB[prop]=temp;
}
于 2012-07-13T23:56:48.427 回答