【问题标题】:Clean and easy way with ES6+ or library lodash to search up an object?使用 ES6+ 或库 lodash 搜索对象的简洁方法?
【发布时间】:2020-06-15 21:56:41
【问题描述】:

假设这个(伪代码)

{a} -> {b} -> {c} 

a.parent = { next: null, methods: { 
  someMethod() {} 
}}

b.parent = { next: a, methods: { 
  someOtherMethod1() {},
  someMethod2() {},
}}

c.parent = { next: b, methods: { 
  anotherMethod() {},
}}

现在假设这个链的深度是可变的。从c,我想访问someMethod,这是methodsa 上的一个属性

所以我可以这样做:(伪代码)

let resNode
while (node.next) {
  if (node.parent.methods.someMethod) {
     resNode = node
     break
  } else {
     node = node.parent.next
  }
}

typeof resNode.methods.someMethod === 'Function'
  1. ES6 是否提供任何内部方法来执行此操作?
  2. 像 lodash 这样的库有解决这个问题的方法吗?
  3. 您如何正确描述这一点?你会说链表遍历吗?

注意-我知道我可以编写一个辅助函数来封装这里的逻辑,但这不是问题。谢谢你的建议。

【问题讨论】:

  • 不,写你的函数。
  • @AdrianBrand 我很有希望。 ;)

标签: javascript ecmascript-6 lodash


【解决方案1】:

您可以通过这种方式访问​​对象的属性或方法,希望对您有所帮助。

var contacts = [
	{
		"firstName": "Akira",
		"lastName": "Laine",
		"number": "0543236543",
		"likes": ["Pizza", "Coding", "Brownie Points"]
	},
	{
		"firstName": "Harry",
		"lastName": "Potter",
		"number": "0994372684",
		"likes": ["Hogwarts", "Magic", "Hagrid"]
	},
	{
		"firstName": "Sherlock",
		"lastName": "Holmes",
		"number": "0487345643",
		"likes": ["Intriguing Cases", "Violin"]
	},
	{
		"firstName": "Kristian",
		"lastName": "Vos",
		"number": "unknown",
		"likes": ["JavaScript", "Gaming", "Foxes"]
	}
];

function lookUpProfile (name, prop) {
	for (var i = 0; i < contacts.length; i++) {
		if (contacts[i].firstName === name) {
			return contacts[i][prop] || "No such property";
		}
	}
	return "No such contact";
}

var data = lookUpProfile("Sherlock", "lastName");

console.log(data);

【讨论】:

  • 这不是我的问题,但感谢您的宝贵时间。祝你旅途愉快 :) 提示,查找 Array.find
猜你喜欢
  • 1970-01-01
  • 2020-09-24
  • 2016-09-07
  • 2018-03-14
  • 2020-05-07
  • 2017-05-01
  • 2019-02-18
  • 1970-01-01
相关资源
最近更新 更多