2017-10-30 3 views
0

こんにちは私は、オブジェクトの配列からオブジェクト全体を削除し、同時にファイルを書き直そうとしています。jsonオブジェクトの配列からjsonオブジェクト全体を削除してファイルに書き出すにはどうすればよいですか?

私のオブジェクトは、このようになります...

[ 
{ 
    "name": "My Name", 
    "menu": "My Menu", 
    "content": "Some content about me" 
}, 
{ 
    "name": "Another Name", 
    "menu": "Another Menu", 
    "content": "Some more content about me" 
} 
] 

私が使用してノードでこのファイルを開くよ...

var fs = require('fs'); 

ユーザーは、彼らがしたいオブジェクトの名前に入り、ファイルから削除してsubmitを押すと、私のhandleSubmit関数が呼び出されます。

handleSubmit(e) { 
    let dialogName = this.state.title;  // name of object to be deleted 
    dialogName = dialogName.toLowerCase().replace(/\s+/g, ''); 
    dialogNmae = dialogName.charAt(0).toUpperCase() + dialogName.substr(1); 

    let dataJson = fs.readFileSync('./app/data/MyData.json'); 
    let tempData = JSON.parse(dataJson); 

    tempData = tempData.filter(obj => { 
     return dialogName === obj.name; 
     }).map((obj, index) => { 
      obj.splice(0,3); 
      return (
       <div> 
       </div> 
      ); 
     }); 

    tempData = JSON.stringify(tempData, null, 2); 
    fs.writeFile('./app/data/MyData.json', tempData, finished); 
} 

私の問題は、すべてのデータは空のデータテーブルになります。私はちょうど1つのオブジェクトを削除したいが、すべてを削除しない。

答えて

1

最初に:フィルタ関数は、テストに一致するフィルタ関数を削除します。だからリストにないマッチだけのリストを望むなら、名前が一致しないことをテストする必要があります。

var data = '[{"name":"My Name","menu":"My Menu","content":"Some content"},{"name": "Another Name", "menu": "Another Menu", "content": "Some more content about me" }]'; 
 

 
var tempData = JSON.parse(data); 
 

 
var dialogName = "My Name"; 
 
    
 
console.log(tempData); 
 
    
 
tempData = tempData.filter(obj => { 
 
    return dialogName !== obj.name; 
 
    }); 
 
    
 
console.log(tempData); 
 

 
tempData = JSON.parse(data); 
 
tempData = tempData.filter(obj => { 
 
     return "Not there?" !== obj.name; 
 
     }); 
 

 
console.log(tempData); 
 

 
// Not there removes all from the list? when logci inverted. 
 
tempData = JSON.parse(data); 
 
tempData = tempData.filter(obj => { 
 
     return "Not there?" === obj.name; 
 
     }); 
 

 
console.log(tempData);

第二に、あなたのmap機能は、任意の意味がありません!私はあなたがジェソンを望んだと思った? <div>タグは何ですか?

+0

ああ、私はファイルを追加して画面に戻すために反応コンポーネントを作っていましたが、関数を移植してdivを返すことを忘れました – user3622460

+0

これを動作させられないようです。 – user3622460

+0

これは、前と同じ問題 - 空のdata.jsonファイル – user3622460

関連する問題