Joh*_*ohn 0 javascript angularjs lodash
我有一个对象'测试':
var test={
"unit3":[
{
"chapter":{
"id":4,
"name":"earth",
"id_above":2
}
},
{
"book":{"name":"earth"}
}
],
"unit4":[
{
"chapter":{
"id":5,
"name":"water",
"id_above":2
}
},
{
"book":{"name":"sea"}
}
],
"unit1":[
{
"chapter":{
"id":2,
"name":"biology",
"id_above":2
}
},
{
"book":{"name":"science"}
}
]
};
Run Code Online (Sandbox Code Playgroud)
根据'id_above value'(id_above和id应该相同,如果没有,我必须在正确的单位下移动它),我想得到这个:
var hope={
"unit1":[
{
"chapter":{
"id":2,
"name":"biology",
"id_above":2
}
},
{
"book":{"name":"science"}
}
],
"sub":[
{
"unit3":[
{
"chapter":{
"id":4,
"name":"earth",
"id_above":2
}
},
{
"book":{"name":"earth"}
}
],
"unit4":[
{
"chapter":{
"id":5,
"name":"water",
"id_above":2
}
},
{
"book":{"name":"sea"}
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我试过了 :
for (var key in test){
if(test.hasOwnProperty(key)){
for (var i =0;i<test[key].length;i++){
if (test[key][i].chapter.id!=test[key][i].chapter.id_above){
for (var key2 in test){
if(test.hasOwnProperty(key2)){
for (var j =0;j<test[key2].length;j++){
var o=_.find(test[key2][j].chapter,{id:test[key][i].chapter.id_above})
console.log("o",o); //undefined
} }}} } } }
Run Code Online (Sandbox Code Playgroud)
问题是我的变量o是'undefined',我想在以下之后做:
test.sub=a;
Run Code Online (Sandbox Code Playgroud)
请问你能帮帮我吗 ?谢谢.
您不能轻易地将JavaScript对象用作有序容器.相反,使用数组.
虽然现在JavaScript对象属性确实有一个订单(或者某些操作就像对象属性现在有一个订单一样,这取决于你想看它的方式),这是一个新东西(从ES2015开始),而且订单是难以合作.值得注意的是,for-in声明中并没有支持产权制度,也没有Object.keys.一些新操作如Object.getOwnPropertyNames支持新订单.
如果需要订单,请使用数组.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |