coffeescript: l oop через объекты в массиве - PullRequest
0 голосов
/ 28 апреля 2020

Я довольно новичок в coffeescript и пытаюсь выполнить l oop через объекты в массиве, но не могу заставить его работать правильно.

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 для всех них. Я видел примеры, как l oop через массивы, но не уверен, как это работает для объектов в массивах

Спасибо

1 Ответ

1 голос
/ 28 апреля 2020

В вашем коде есть несколько ошибок

Во-первых, вы не можете использовать ключевое слово var в coffeescript

Далее вы повторно используете переменную idObj в l oop и за ее пределами, поэтому он скрыт внутри вашего l oop и не может использоваться

И, похоже, существует несоответствие между вашим кодом и вашим выводом, поскольку нигде вы не возвращаете логическое значение.

Вот рабочий пример того, что вы пытаетесь сделать:

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, который содержит идентификатор объекта, который вы пытаетесь найти

L oop перебирает массив объектов, поэтому каждый элемент является объектом. Я проверяю, совпадает ли идентификатор объекта с тем, что вы ищете, и если это так, я назначаю его для targetObj, чтобы вы могли использовать его после l oop

В качестве альтернативы вы можете сделать это как единое целое -линер с использованием некоторых фильтров понимания доступны:

targetObj = (obj for obj in val when obj.id is 1)[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...