2014-12-11 4 views
0

У меня есть объект следующего вида:Изменение объекта в Javascript?

{ body: { entry: { body: '' }, context: '' }, 
    contextids: 
    [ { uid: 'ff992fa0-817a-11e4-bea0-299f5e3c3819', 
     name: 'deemeetreesNotebook' }, 
    { uid: 'ff992fa1-817a-11e4-bea0-299f5e3c3819', name: 'public' }, 
    { uid: 'ff992fa2-817a-11e4-bea0-299f5e3c3819', name: 'ideas' }, 
    { uid: 'ff992fa3-817a-11e4-bea0-299f5e3c3819', 
     name: 'thingsToLearn' }, 
    { uid: 'ff992fa4-817a-11e4-bea0-299f5e3c3819', 
     name: 'wayToRussia' }, 
    { uid: 'ff992fa5-817a-11e4-bea0-299f5e3c3819', 
     name: 'polysingularity' }, 
    { uid: 'ff992fa6-817a-11e4-bea0-299f5e3c3819', 
     name: 'infranodus' }, 
    { uid: 'ff992fa7-817a-11e4-bea0-299f5e3c3819', 
     name: 'artmital' } ], 
    internal: 1 } 

Я хочу повторить через этот объект, и изменить его в том, что он держит только contextids где name приравнивает определенную строку (например, thingsToLearn).

Что такое хороший способ удаления нежелательных контекстов из моего исходного объекта?

Спасибо!

+1

Использование [** 'Массив # filter' **] (HTTPS : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter). –

+0

^что, 'contextids' - массив! – adeneo

+0

http://jsfiddle.net/0hjc7dgL/ – adeneo

ответ

1

Loop, проверьте, сращивание:

var nameToKeep = "someId"; 
for (var i = 0; i < data.contextids.length; i++) { 
    if (data.contextids[i].name != nameToKeep) { 
     data.contextids.splice(i, 1); 
     i--; 
    } 
} 
+0

Единственное, что я мог бы изменить в этом ответе, это написать его функционально и написать 'data.contextids [i] .name! == nameToKeep' в выражении if, потому что' ! == 'является лучшей практикой – Adam

0

Похоже, работа для Array.filter:

var d = { 
 
    body: { 
 
    entry: { 
 
     body: '' 
 
    }, 
 
    context: '' 
 
    }, 
 
    contextids: [{ 
 
    uid: 'ff992fa0-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'deemeetreesNotebook' 
 
    }, { 
 
    uid: 'ff992fa1-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'public' 
 
    }, { 
 
    uid: 'ff992fa2-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'ideas' 
 
    }, { 
 
    uid: 'ff992fa3-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'thingsToLearn' 
 
    }, { 
 
    uid: 'ff992fa4-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'wayToRussia' 
 
    }, { 
 
    uid: 'ff992fa5-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'polysingularity' 
 
    }, { 
 
    uid: 'ff992fa6-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'infranodus' 
 
    }, { 
 
    uid: 'ff992fa7-817a-11e4-bea0-299f5e3c3819', 
 
    name: 'artmital' 
 
    }], 
 
    internal: 1 
 
}; 
 

 
d.contextids = d.contextids.filter(function(item) { 
 
    return item.name === "thingsToLearn"; 
 
    }); 
 

 
alert(JSON.stringify(d.contextids));

Смежные вопросы