类型错误:在对象中找不到函数 find [英] TypeError: Cannot find function find in object

查看:117
本文介绍了类型错误:在对象中找不到函数 find的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这令人沮丧.我认为问题是 api 响应返回的对象.也许它是在字符串中,所以我所做的是从邮递员"复制响应并将其直接粘贴到 js 上.这样我确定它在对象/数组中.但结果是同样的错误.

This is frustrating. I thought the problem was the object being returned by the api response. Maybe it's in string so what I did was I copied the response from "postman" and paste it directly on the js. This way im sure that it's in object/array. But the result was the same error.

为什么我的代码在 netsuite 上不起作用.下面的代码非常简单.尝试在我的本地机器上运行它并且它起作用了.netsuite 不支持 .find 吗?

Why is my code not working on netsuite. The code below is very simple. Tried running it on my local machine and it worked. Does .find not supported in netsuite?

var tasks_data = new Array();
  var tasks_data = [
    {
      'id': 10376401,
      'name': 'closed',
      'notes': null,
      'start_date': '2017-12-23',
      'end_date': '2018-01-07',
      'start_time': null,
      'end_time': null,
      'color': '#f99bd0',
      'color_id': 5,
      'estimated_hours': 0,
      'done': false,
      'user_id': 961775,
      'project_id': null,
      'project': null,
      'folder_id': null,
      'weight': 0,
      'created_at': '2017-11-13T00:58:16.577+00:00',
      'updated_at': '2017-11-13T00:58:16.577+00:00',
      'deleted_at': null
    },
    {
      'id': 10438883,
      'name': '',
      'notes': null,
      'start_date': '2018-02-17',
      'end_date': '2018-02-17',
      'start_time': null,
      'end_time': null,
      'color': '#ccaf53',
      'color_id': 36,
      'estimated_hours': 0,
      'done': false,
      'user_id': 961775,
      'project_id': 1501267,
      'project': {
        'id': 1501267,
        'name': 'sue',
        'color': '#ccaf53',
        'color_id': 36,
        'client': null,
        'created_at': '2017-11-17T03:14:11.459+00:00',
        'updated_at': '2017-11-17T03:14:11.459+00:00'
      },
      'folder_id': null,
      'weight': 0,
      'created_at': '2017-11-17T03:15:48.055+00:00',
      'updated_at': '2017-11-17T03:15:48.055+00:00',
      'deleted_at': null
    },
    {
      'id': 10438875,
      'name': 'Sue',
      'notes': null,
      'start_date': '2018-01-27',
      'end_date': '2018-01-27',
      'start_time': null,
      'end_time': null,
      'color': '#ccaf53',
      'color_id': 36,
      'estimated_hours': 0,
      'done': false,
      'user_id': 961775,
      'project_id': 1501267,
      'project': {
        'id': 1501267,
        'name': 'sue',
        'color': '#ccaf53',
        'color_id': 36,
        'client': null,
        'created_at': '2017-11-17T03:14:11.459+00:00',
        'updated_at': '2017-11-17T03:14:11.459+00:00'
      },
      'folder_id': null,
      'weight': 0,
      'created_at': '2017-11-17T03:14:11.903+00:00',
      'updated_at': '2017-11-17T03:14:50.363+00:00',
      'deleted_at': null
    }
  ];

  // var result = output_result(tasks_data)
  var result = tasks_data.reduce(function (acc, item) {
    var task = acc.find(function (accItem) {
      return accItem.project_id === item.project_id
    })
    if (task && !Array.isArray(task.schedule)) {
      task.schedule = [task.schedule].concat({
        project_id: item.project_id,
        start_date: item.start_date,
        end_date: item.end_date,
        daily_estimate: item.estimated_hours,
      })
      task.start_dates.push(item.start_date)
      task.end_dates.push(item.end_date)
      task.next_start_dates.push(item.start_date)
    } else if (task && Array.isArray(task.schedule)) {
      task.schedule.push({
        project_id: item.project_id,
        start_date: item.start_date,
        end_date: item.end_date,
        daily_estimate: item.estimated_hours,
      })
      task.start_dates.push(item.start_date)
      task.end_dates.push(item.end_date)
      task.next_start_dates.push(item.start_date)
    } else {
      acc.push({
        project_id: item.project_id, //(item.project_id === null) ? 'Missing_project_id' : item.project_id,
        schedule: [{
          project_id: item.project_id, //(item.project_id === null) ? 'Missing_project_id' : item.project_id,
          start_date: item.start_date,
          end_date: item.end_date,
          daily_estimate: item.estimated_hours,
        }],
        start_dates: [item.start_date],
        end_dates: [item.end_date],
        next_start_dates: [item.start_date],
      })
    }

    return acc
  }, [])
  
  console.log(result)

<body>
Hello
</body>

非常感谢任何帮助.

推荐答案

我看到您添加了一个 polyfill 来解决问题,但您的问题的答案是 NetSuite/SuiteScript 使用 ECMAScript 5.1;它的引擎是 Java Rhino(不确定是哪个版本).

I see you added a polyfill to solve the problem, but the answer to your question is that NetSuite/SuiteScript uses ECMAScript 5.1; its engine is Java Rhino (unsure which version).

find 是在 ES6 中加入的,而 reduce 是在 ES5.1 中加入的,所以 SuiteScript 不支持 find 而支持 <代码>减少.

find was added in ES6, while reduce was added in ES5.1, so SuiteScript does not support find while it does support reduce.

来源:

这篇关于类型错误:在对象中找不到函数 find的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆