我有这个JSON对象
{1: "test projekt", 4: "Second Project",
5: "Third Project", 6: "Fourth Project",
7: "5th one", 8: "6th one dude",
uhash: "7021a11332508b6e30d3b6d3e95180398228b0e4010fc3f05db81e80"}
我想把它分成:
{1: "test projekt", 4: "Second Project",
5: "Third Project", 6: "Fourth Project",
7: "5th one", 8: "6th one dude"}
和
{uhash: "7021a11332508b6e30d3b6d3e95180398228b0e4010fc3f05db81e80"}
我怎么能在js中做到这一点?
答案 0 :(得分:2)
这样的事情?
var secondObj = {uhash: firstObj.uhash};
delete firstObj.uhash;
对于更复杂的东西,你可以使用下划线:underscorejs。看看groupBy或map。取决于你究竟需要什么。
答案 1 :(得分:1)
for ... in
循环将迭代对象键。请务必使用hasOwnProperty
方法对其进行限制,否则for ... in
将找到该对象的所有继承键。一旦你可以迭代对象,你需要做的就是检查键并填充另外两个对象。
var numbers = {},
uhash = {},
prop = '';
for (prop in json) {
if (json.hasOwnProperty(prop)) {
if (!isNaN(prop)) {
numbers[prop] = json[prop];
} else {
uhash[prop] = json[prop];
}
}
}
答案 2 :(得分:1)
操作JSON的最简单方法是将其解析为对象,操纵对象,然后从对象创建JSON:
var o = JSON.parse(json);
var o2 = { uhash: o.uhash };
delete o.uhash;
var json1 = JSON.stringify(o);
var json2 = JSON.stringify(o2);
注意:较旧的浏览器不支持JSON object,例如IE 7。
答案 3 :(得分:1)
这可能会有所帮助
function popAttributeFromData (attrs, data) {
for (var key in data) {
if(key === attrs) {
var result = {
attrs: data[attrs]
};
delete data[attrs];
return result;
}
}
return null;
}
它从数据中迭代keys
直到密钥与传递的参数attrs
匹配。
结果如下