var name = {
a:'haha'
b:'xixi'
c:'hehe'
}
怎样转换成如下格式:就是把除了c的全拿进other中
var name = {
other:{
a:'haha'
b:'xixi'
}
c:'hehe'
}
求大神指教
var name = {
a:'haha'
b:'xixi'
c:'hehe'
}
怎样转换成如下格式:就是把除了c的全拿进other中
var name = {
other:{
a:'haha'
b:'xixi'
}
c:'hehe'
}
求大神指教
有别于公子的答案,因为你的需求里面只有一个要保留的,所以此方法只循环一次,所以效率应该会快一些(其中portectKey
可以作为参数传入,也可以写死)
function clearObj(obj){
var protectKeys = ['c'],
obj = JSON.parse(JSON.stringify(obj)), //根据公子的建议,这里增加这一行
pNum = protectKeys.length,
newObj={},
protectKey;
for(var i=0;i<pNum;i++){
protectKey = protectKeys[i];
newObj[protectKey]=obj[protectKey];
delete obj[protectKey];
}
newObj.other = obj;
return newObj;
}
var newObj = clearObj({a:'haha',b:'xixi',c:'hehe'});
如果是只有a
和b
要放入other里,也差不多啦。
function clearObj(obj){
var protectKeys = ['a','b'],
obj = JSON.parse(JSON.stringify(obj)), //根据公子的建议,这里增加这一行
pNum = protectKeys.length,
protectKey;
obj.other = {};
for(var i=0;i<pNum;i++){
protectKey = protectKeys[i];
obj.other[protectKey]=obj[protectKey];
delete obj[protectKey];
}
return obj;
}
var newObj = clearObj({a:'haha',b:'xixi',c:'hehe'});
如果你使用underscore的话,很简单:
var others = _.omit(name, 'c');
name = {
others: others,
c: name.c
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
需求奇奇怪怪的…