为什么以下map函数用逗号返回字符串?

时间:2016-04-22 03:03:27

标签: javascript vue.js

我循环浏览一个对象。如果其中一个键与另一个fields对象的值匹配,则返回该type个对象的fields值:

// OBJECTS

user: {
  email: '',
  password: ''
}

formFields: [
  { name: 'email', type: 'text', required: true },
  { name: 'password', type: 'password', required: true }
]

// HTML

<input :type="getPropType($key)"

// FUNCTION

getPropType (key) {
  console.log(this.fields)
  console.log(key)
  return this.fields.map(field => {
    if (field.name === key) return field.type
  })
}

除了每个field.type

返回逗号外,它都有效

enter image description here

这很奇怪,因为日志不输出任何逗号:

enter image description here

可能是什么原因?

2 个答案:

答案 0 :(得分:3)

我认为你要做的是提取对象的type,其名称与key的值相同,在这种情况下,更合适的解决方案就是这样做 - 即查找具有给定名称的元素然后提取其类型

getPropType(key) {
  console.log(this.fields)
  console.log(key);
  var type;
  this.fields.some(field => {
    if (field.name === key) {
      type = field.type;
      return true;
    }
  });
  return type
}

如果您想使用.map(),那么

return this.fields.filter(field => field.name === key).map(field => field.type).join('')

答案 1 :(得分:1)

Array.prototype.map()返回数组。你的“getPropType”返回[“text”,“”],在你的情况下它应该减少。

<?php

namespace Acme\Bundle\PostBundle\Listener;
use Doctrine\ODM\MongoDB\DocumentManager;
use Doctrine\ODM\MongoDB\Event\LifecycleEventArgs;

public function postUpdate(LifecycleEventArgs $eventArgs)
    {
        /* @var $odm DocumentManager */
        $odm = $eventArgs->getDocumentManager();
        $object = $eventArgs->getDocument();

        if ($object instanceOf Post) {
          // how to check if description field is updated
        }
    }