私は以下のコードで動作しています。しかし、ESLintはfor..in
ループの代わりにObject.keys
を使用することを提案しています。私はkeys
を反復しようとしましたが、一致するものが見つかった場合は検索を行い、オブジェクトを返します。 for..in
では動作しますが、Object.keysでは動作しません。私はforEach
をfilter
と置き換えようとしましたが、私にとってはうまくいきませんでした。助言がありますか。ここESLintエラーはfor.inの代わりにObject.keysを使用します
function searchObj (obj, query) {
// Object.keys(obj).forEach(function(key){
for (var key in obj) {
var value = obj[key];
if (typeof value === 'object') {
return searchObj(value, query);
}
if (typeof value === 'string' && value.toLowerCase().indexOf(query.toLowerCase()) > -1) {
return obj;
}
}
}
var demoData=[
{id:1,desc:{original:'trans1'},date:'2017-07-16'},
{id:2,desc:{original:'trans2'},date:'2017-07-12'},
{id:3,desc:{original:'trans3'},date:'2017-07-11'},
{id:4,desc:{original:'trans4'},date:'2017-07-15'}
];
var searchFilter = demoData.filter(function(obj){
return searchObj(obj, 'trans1');
});
console.log(searchFilter);
はリンクJS bin
あなたはそれがある方法をあなたのコードに満足している場合は理由だけで、そのルールをオフにしませんか?彼らは単なるガイドライン/誰かの個人的な意見であり、コードはどのように書かれているべきか、何かが石ではない。 – Andy
'Object.keys(...).find'や' for(... of Object.keys(...)) 'を試すことができますが、正に[あなたのループは問題ありません](https://stackoverflow.com/a/45014721/ 1048572)。そのes-lintルールを無効にしてください! – Bergi
'for..in'を使用するのではなく、それが唯一の最良の方法であれば、私たちはどうすればよいのでしょうか? –