Safari浏览器中的javascript数组推送错误

时间:2015-08-06 15:11:46

标签: javascript safari

我收到了这个错误

SyntaxError: Unexpected token '}'. Expected a ':' following the property name 'value'.
(anonymous function)

这样做:

var datas1 = [];
angular.forEach(data.data, function(value, key) {
            if(value.comfi_type_id == "1" || value.comfi_type_id == "3" || value.comfi_type_id == "4")
                datas1.push({value})
        })
        $timeout(function() {
            $scope.items = {'data':{'data1':datas1}};
          }, 1000);

代码在Chrome上正常运行,但只有Safari出现错误。谁能开导我,有什么不对?

Question Update

我这样做之后

datas1.push({value:value})

现在可以在Safari浏览器中正常运行。但是现在当我尝试使用ios设备(这是离子应用程序)时,代码无法运行。 datas1

内没有数据被推送

我想当Safari上的一切正常工作时,还可以使用ios设备吗?

2 个答案:

答案 0 :(得分:3)

Safari可能不支持短对象表示法({value})。您必须指定键和值:

public class PersonValidator : AbstractValidator<PersonVm>
  {
    public PersonValidator()
    {
      RuleFor(model => model.FirstName).NotEmpty();
      RuleFor(model => model.LastName).NotEmpty();
    }
  }

  public class PersonMustBeRegisteredValidator : AbstractValidator<PersonVm>
  {
    private readonly IQuery<PersonExists> _query;

    public PersonMustBeRegisteredValidator(IQuery<ReturnPerson> query)
    {
      _query = query;

      Custom(model =>
        {
          var person = _query.Select(new { model.Id });

          if (person == null) return new ValidationFailure("Id", "Person does not exist");

           return null;
        });
    }
  }}

答案 1 :(得分:0)

我也遇到过这个问题。那是因为我正在使用

var newObj = [];
for (var k in dataArray) {
    newObj.push(datArr[k]);
}

这个for-loop&#39;仅在Safari中创建问题,它还向数组添加一个函数对象,并且数组长度始终为实际长度+ 1。

我通过使用以下格式替换此for循环来修复,

var newObj = [];
for (var k = 0 ; k < dataArray.length; k++) {
    newObj.push(datArr[k]);
}