使用 underscore.js 在另一个对象中查找一个对象
Use underscore.js to find an object in another object
使用underscore.js,获取名为"Ted"的对象的ID的最简单方法是什么?
示例:
var people = {
1: { name: "Ted" },
2: { name: "Will" },
3: { name: "James" }
}
原始 JS 解决方案:
var personId;
for (id in people) {
if (people[id].name === "Ted") {
personId = id;
}
}
与findKey
:
var personId = _.findKey(people, function(obj) { return obj.name === 'Ted' });
Blender 建议这个简化版本:
var personId = _.findKey(people, { name: 'Ted' });
如果有多个同名的 id,我建议你一个原始的 JS 解决方案,它给你一个对象,里面只保留属性匹配:
var people = {
1: { name: "Ted" },
2: { name: "Will" },
3: { name: "James" },
4: { name: "Ted" }
};
var keys = Object.keys(people);
result = {};
keys.forEach(item => {if (people[item].name === "Ted")result[item] = {name: people[item].name}});
console.log(result); // { '1': { name: 'Ted' }, '4': { name: 'Ted' } }
使用underscore.js,获取名为"Ted"的对象的ID的最简单方法是什么?
示例:
var people = {
1: { name: "Ted" },
2: { name: "Will" },
3: { name: "James" }
}
原始 JS 解决方案:
var personId;
for (id in people) {
if (people[id].name === "Ted") {
personId = id;
}
}
与findKey
:
var personId = _.findKey(people, function(obj) { return obj.name === 'Ted' });
Blender 建议这个简化版本:
var personId = _.findKey(people, { name: 'Ted' });
如果有多个同名的 id,我建议你一个原始的 JS 解决方案,它给你一个对象,里面只保留属性匹配:
var people = {
1: { name: "Ted" },
2: { name: "Will" },
3: { name: "James" },
4: { name: "Ted" }
};
var keys = Object.keys(people);
result = {};
keys.forEach(item => {if (people[item].name === "Ted")result[item] = {name: people[item].name}});
console.log(result); // { '1': { name: 'Ted' }, '4': { name: 'Ted' } }