我有一个对象,我试图获取每个键的最后一个值并将其放入另一个对象中。
var setA = {
'a':'001, 007, 101',
'b':'052, 004, 006, 005',
'c':'003, 002, 001'
}
我想要做的是得到最后一个这样的:
var setB = {
'a':'101',
'b':'005',
'c':'001'
}
我怎么能做到这一点?
我有一个对象,我试图获取每个键的最后一个值并将其放入另一个对象中。
var setA = {
'a':'001, 007, 101',
'b':'052, 004, 006, 005',
'c':'003, 002, 001'
}
我想要做的是得到最后一个这样的:
var setB = {
'a':'101',
'b':'005',
'c':'001'
}
我怎么能做到这一点?
一个循环?
var setB = {}
for (var o in setA) {
var s = setA[o].split(', '),
x = s[s.length - 1]
setB[o] = x
}
为什么不只是:
var setB = {
'a':setA.a.split(',').pop().trim(),
'b':setA.b.split(',').pop().trim(),
'c':setA.c.split(',').pop().trim()
}
实际上,这会获取从变量 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);
参考:
您可以为此使用正则表达式
var setB = {
'a':setA.a.match(/(\d+)$/)[1],
'b':setA.b.match(/(\d+)$/)[1],
'c':setA.c.match(/(\d+)$/)[1]
}
/(\d+)$/
将匹配字符串中的最后一位数字
如果你知道你总是想要字符串的最后 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);
}
这段代码可以解决问题:
var setB={},temp,prop;
for(prop in setA){
temp=setA[prop].split(', ');
temp=temp[temp.length-1];
setB[prop]=temp;
}