2016-06-23 15 views
-2

で始まるキーを削除します。は、私はこれを持っている場合、特定の文字

var result = [ 

    { A: '0', b1: '0' }, 
    { B: '1', b2: '1' }, 
    { C: '2', b3: '2' } 
]; 

どのように私は「B」で始まるキーを削除することができますか?

result = [ 

    { A: '0'}, 
    { B: '1'}, 
    { C: '2'} 
]; 

と同様に呼び出すことができるように:(および/または第二のキー/値のペア)

ので、持っている

result.letters

console.log(result.letters) = 

"letters" : 
{ 
    'A' : '0', 
    'B' : '1', 
    'C' : '2', 
..} 
+1

_ "と同様に呼び出すことができるようにする: result.letters、" _あなたは何を意味するか –

+0

使用array.map(機能(OBJ){リターンOBJ ..}) ; –

答えて

3

を試してみてください
result = result.map(function(obj){ 
    Object.keys(obj).forEach(function(key){ 
    key.indexOf("b") == 0 && delete obj[key]; 
    }); 
    return obj; 
}) 

そして、次のような変形

var letters = result.map(function(obj){ 
    Object.keys(obj).forEach(function(key){ 
    key.indexOf("b") == 0 && delete obj[key]; 
    }); 
    return obj; 
});  
result = { letters: {}}; 
letters.forEach(function(obj){ 
    var keyName = Object.keys(obj)[0]; 
    result.letters[ keyName ] = obj[ keyName ]; 
}); 
+0

:ニース、ありがとうが、私はsthのように使用することができます: 'result.letters'私はポストで言うように。 – George

+0

@George更新を試してください – gurvinder372

+0

:ほぼそこにあります!私は結果に括弧を入れたくありません。私の投稿で見ることができます。これは可能ですか?ありがとう! – George

2

あなたはString.prototype.startsWith()機能を使用して、キーを削除することができますを作るresultとして直接result.lettersとしてそれを呼び出す代わりにします。

var results = [ 
 
    { A: '0', b1: '0' }, 
 
    { B: '1', b2: '1' }, 
 
    { C: '2', b3: '2' } 
 
]; 
 

 
results.forEach(function(result) { 
 
    for (var key in result) { 
 
    if (key.startsWith('b')) { 
 
     delete result[key]; 
 
    } 
 
    } 
 
}); 
 

 
document.body.innerHTML = '<pre>' + JSON.stringify(results, null, 4) + '</pre>';


編集

はあなたが何を意味するか、このですか?プロトタイプ関数を作る?そうでない場合は、関数の定義と実行方法を読み上げる必要があります。

var results = [ 
 
    { A: '0', b1: '0' }, 
 
    { B: '1', b2: '1' }, 
 
    { C: '2', b3: '2' } 
 
]; 
 

 
Array.prototype.letters = function(letter) { 
 
    return { 
 
    letters : this.map(function(obj) { 
 
     return Object.keys(obj).reduce(function(result, key) { 
 
     if (!key.startsWith(letter)) { 
 
      result[key] = obj[key]; 
 
     } 
 
     return result; 
 
     }, {}); 
 
    }) 
 
    }; 
 
} 
 

 
var letters = results.letters('b'); 
 

 
document.body.innerHTML = '<pre>' + JSON.stringify(letters, null, 4) + '</pre>';


あなたはPROPERTYような関数を呼び出したい場合は、あなたがオブジェクトの上に、それを定義する必要があり

...さんは再びこれを試してみましょう。

これはHACKです。これは実動コードでは使用されません。

var results = [ 
 
    { A: '0', b1: '0' }, 
 
    { B: '1', b2: '1' }, 
 
    { C: '2', b3: '2' } 
 
]; 
 

 
Object.defineProperty(results, 'letters', { 
 
    value: { 
 
    letters : results.map(function(obj) { 
 
     return Object.keys(obj).reduce(function(result, key) { 
 
     if (!key.startsWith('b')) { 
 
      result[key] = obj[key]; 
 
     } 
 
     return result; 
 
     }, {}); 
 
    }) 
 
    } 
 
}); 
 

 
var letters = results.letters; 
 

 
document.body.innerHTML = '<pre>' + JSON.stringify(letters, null, 4) + '</pre>';

+0

:ニース、ありがとう、しかし、私はsthのように使用できるようにしたい:result.letters私は記事で言うように。 – George

+0

*** sth ***とは何ですか?なぜ 'result.letters'はキー' letters'を持つオブジェクトを返しますか? –

+0

おそらくOPはこの機能をArray.prototypeに追加したいと思っていますか? sthは何かを意味する:p。私は彼がそれを関数のように呼び出せるようにしたいと思います。 result.filteroutStringsWithB()など –

関連する問題