私の目的:
[
{
description: 'object1', id: 1
},
{
description: 'object2', id: 2
}
{
description: 'object3', id: 3
}
{
description: 'object4', id: 4
}
]
以下の私の関数では、一致するIDを見つけるために説明を渡しています。
function pluckSavedView(action, view) {
console.log('action: ', action);
console.log('pluckSavedView: ', view); // view = 'object1'
var savedViews = retrieveSavedViews();
console.log('savedViews: ', savedViews);
if (action === 'delete') {
var delete_id = _.result(_.find(savedViews, function(description) {
return description === view;
}), 'id');
console.log('delete_id: ', delete_id); // should be '1', but is undefined
}
}
私はlodashのfindメソッドを使おうとしています: https://lodash.com/docs#find
しかし、私の変数delete_id
は未定義で出てきています。
更新 この質問をチェックしている人のために、Ramdaはlodashと同じことをするのにいいライブラリですが、より機能的なプログラミングの方法で:) http://ramdajs.com/0.21.0/ docs/
コールバックに渡される引数は、配列の要素の1つです。配列の要素は{description: ..., id: ...}
という形式のオブジェクトです。
var delete_id = _.result(_.find(savedViews, function(obj) {
return obj.description === view;
}), 'id');
あなたがリンクしたドキュメントの他の代替案(lodash v3):
_.find(savedViews, 'description', view);
Lodash v4:
_.find(savedViews, ['description', view]);
ロダッシュとES5
var song = _.find(songs, {id:id});
ロダッシュとES6
let song = _.find(songs, {id});
https://lodash.com/docs#find のドキュメント
lodash
を使わなくても同じように簡単にできることを知っています。
var delete_id = savedViews.filter(function (el) {
return el.description === view;
})[0].id;
find
メソッドを使用すると、コールバックには各要素の値が渡されます。
{
description: 'object1', id: 1
}
したがって、次のようなコードが必要です。
_.find(savedViews, function(o) {
return o.description === view;
})
Lodash、Ramda、またはその他の追加の依存関係は必要ありません。
ES6のfind()関数を機能的な方法で使用するだけです。
savedViews.find(el => el.description === view)
サードパーティのライブラリを使用して、それらに付属するすべてのグッズを取得する必要がある場合があります。ただし、一般的に言えば、依存関係を避けるようにしてください必要ない場合。依存関係は次のことができます。
var delete_id = _(savedViews).where({ description : view }).get('0.id')
あなたは以下を使うことができます
import { find } from 'lodash'
次に、次のようにリストからオブジェクト全体(そのキーや値だけでなく)を返します。
let match = find(savedViews, { 'ID': 'id to match'});
これは、配列内の指定されたオブジェクト、_.findの基本的な使用例を見つけるために
const array =
[
{
description: 'object1', id: 1
},
{
description: 'object2', id: 2
}
{
description: 'object3', id: 3
}
{
description: 'object4', id: 4
}
];
これはうまくいくでしょう
q = _.find(array, {id:'4'}); // delete id
console.log(q); // {description: 'object4', id: 4}
_.findは、要素をインデックスではなく、配列で返すのに役立ちます。そのため、オブジェクトの配列があり、その配列内で特定のキー値で単一のオブジェクトを見つけたい場合は、pare _.findがそのジョブに適したツールです。
インポートlodash
を使用
$ npm i --save lodash
var _ = require('lodash');
var objArrayList =
[
{ name: "user1"},
{ name: "user2"},
{ name: "user2"}
];
var Obj = _.find(objArrayList, { name: "user2" });
// Obj ==> { name: "user2"}
名前に基づいてIDを取得する
{
"roles": [
{
"id": 1,
"name": "admin",
},
{
"id": 3,
"name": "manager",
}
]
}
fetchIdBasingOnRole() {
const self = this;
if (this.employee.roles) {
var roleid = _.result(
_.find(this.getRoles, function(obj) {
return obj.name === self.employee.roles;
}),
"id"
);
}
return roleid;
},