获取对象的最后一个值Javascript或jQuery

获取对象的最后一个值Javascript或jQuery

问题描述:

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

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

我想要做的就是在最后的是这样的:

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

我怎么可能做到这一点?

+3

这是一个nit,但“setA”中的每个属性都只有一个值。 – Pointy 2012-07-13 23:51:24

为什么不干脆:

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

JS Fiddle demo

实际上,这需要从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 Fiddle demo

参考文献:

+0

+1不错的解决方案。 – undefined 2012-07-13 23:53:04

您可以使用正则表达式为

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

/(\d+)$/将字符串

+0

@Raminson你是什么意思? – jbabey 2012-07-13 23:54:31

+0

@Raminson刚做过测试和工作,请详细说明 – Ibu 2012-07-13 23:56:05

中的循环匹配最后一个数字?

var setB = {} 
for (var o in setA) { 
    var s = setA[o].split(', '), 
     x = s[s.length - 1] 
    setB[o] = x 
} 
+0

setB应该是一个对象,而不是一个数组... – Teemu 2012-07-13 23:52:18

+0

是的,固定的! .. ... – elclanrs 2012-07-13 23:54:41

+0

缺少分号,隐式全局变量和错误的变量名...我不想维护此代码,但我们得到了要点:P – jbabey 2012-07-13 23:55:41

如果你知道你总是希望字符串的最后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/

此代码的伎俩:

var setB={},temp,prop; 
for(prop in setA){ 
    temp=setA[prop].split(', '); 
    temp=temp[temp.length-1]; 
    setB[prop]=temp; 
}