我对coffeescript相当陌生,我正试图在一个数组中循环对象,但无法正常工作。
var val = [
{id: 1, Text: "first" },
{id: 2, Text: "Second" },
{id: 3, Text: "Third" }
]
var idObj = 1
for idObj in val
console.log('this is' + idObj)
从上面的代码中,我试图找到对象中的 id
是1,但对所有的对象都返回true.我看到过如何在数组中循环的例子,但不知道对数组中的对象是如何工作的。
谢谢你
你的代码中存在一些错误
首先,你不能使用 var
关键字
接下来,您可以重新使用变量 idObj
在循环内和循环外,所以它在你的循环内是有阴影的,不能使用。
而且你的代码和你的输出之间似乎不匹配,因为你没有在任何地方返回一个布尔值。
下面是一个你想做的工作例子。
val = [
{id: 1, Text: "first" },
{id: 1, Text: "first" },
{id: 2, Text: "Second" },
{id: 3, Text: "Third" }
]
targetId = 1
for obj in val
if obj.id is targetId
targetObj = obj
console.log(targetObj)
我把它改名为 idObj
到 targetId
其中包含了你要找的对象的id。
循环会遍历一个对象数组,所以每个项目都是对象.我检查对象的id是否符合你要搜索的东西,如果符合,我就把它分配给targetObj,这样你就可以在循环之后使用它了。
另外,你也可以将它作为一个单行本,使用一些列的 理解力过滤器 可用。
targetObj = (obj for obj in val when obj.id is 1)[0]