Javascript TypeError:在对象中找不到函数find

Javascript TypeError:在对象中找不到函数find,javascript,netsuite,suitescript2.0,Javascript,Netsuite,Suitescript2.0,这令人沮丧。我认为问题在于api响应返回的对象。可能是字符串,所以我复制了“邮递员”的响应,并将其直接粘贴到js上。通过这种方式,我确信它在对象/数组中。但结果是同样的错误 为什么我的代码不能在netsuite上运行。下面的代码非常简单。试着在我本地的机器上运行它,它成功了。是否在netsuite中不支持.find var tasks_data=new Array(); 变量任务\u数据=[ { “id”:10376401, “名称”:“已关闭”, 'notes':null, “开始日期”:“

这令人沮丧。我认为问题在于api响应返回的对象。可能是字符串,所以我复制了“邮递员”的响应,并将其直接粘贴到js上。通过这种方式,我确信它在对象/数组中。但结果是同样的错误

为什么我的代码不能在netsuite上运行。下面的代码非常简单。试着在我本地的机器上运行它,它成功了。是否在netsuite中不支持.find

var tasks_data=new Array();
变量任务\u数据=[
{
“id”:10376401,
“名称”:“已关闭”,
'notes':null,
“开始日期”:“2017-12-23”,
“结束日期”为“2018-01-07”,
“开始时间”:null,
“结束时间”:null,
“颜色”:“f99bd0”,
“颜色id”:5,
“估计的_小时数”:0,
“完成”:错误,
“用户id”:961775,
“项目id”:null,
“项目”:null,
“文件夹id”:null,
“权重”:0,
“创建时间”:“2017-11-13T00:58:16.577+00:00”,
“更新时间:”:“2017-11-13T00:58:16.577+00:00”,
“已删除位置”:null
},
{
“id”:10438883,
“姓名”:“,
'notes':null,
“开始日期”:“2018-02-17”,
“结束日期”:“2018-02-17”,
“开始时间”:null,
“结束时间”:null,
“颜色”:“ccaf53”,
“颜色id”:36,
“估计的_小时数”:0,
“完成”:错误,
“用户id”:961775,
“项目id”:1501267,
“项目”:{
“id”:1501267,
'姓名':'苏',
“颜色”:“ccaf53”,
“颜色id”:36,
“客户端”:null,
“创建时间”:“2017-11-17T03:14:11.459+00:00”,
“更新时间”:“2017-11-17T03:14:11.459+00:00”
},
“文件夹id”:null,
“权重”:0,
“创建时间”:“2017-11-17T03:15:48.055+00:00”,
“更新时间:”:“2017-11-17T03:15:48.055+00:00”,
“已删除位置”:null
},
{
“id”:10438875,
'姓名':'苏',
'notes':null,
“开始日期”:“2018-01-27”,
“结束日期”:“2018-01-27”,
“开始时间”:null,
“结束时间”:null,
“颜色”:“ccaf53”,
“颜色id”:36,
“估计的_小时数”:0,
“完成”:错误,
“用户id”:961775,
“项目id”:1501267,
“项目”:{
“id”:1501267,
'姓名':'苏',
“颜色”:“ccaf53”,
“颜色id”:36,
“客户端”:null,
“创建时间”:“2017-11-17T03:14:11.459+00:00”,
“更新时间”:“2017-11-17T03:14:11.459+00:00”
},
“文件夹id”:null,
“权重”:0,
“创建时间”:“2017-11-17T03:14:11.903+00:00”,
“更新时间:”:“2017-11-17T03:14:50.363+00:00”,
“已删除位置”:null
}
];
//var结果=输出结果(任务数据)
var结果=任务\数据减少(功能(acc,项目){
var任务=acc.find(功能(accItem){
返回accItem.project\u id==item.project\u id
})
if(task&&!Array.isArray(task.schedule)){
task.schedule=[task.schedule].concat({
project\u id:item.project\u id,
开始日期:item.start\u日期,
结束日期:item.end\u日期,
每日估计:项目。估计的小时数,
})
任务.开始日期.推送(项目.开始日期)
任务.结束日期.推送(项目.结束日期)
任务。下一个开始日期。推送(项目。开始日期)
}else if(task&&Array.isArray(task.schedule)){
task.schedule.push({
project\u id:item.project\u id,
开始日期:item.start\u日期,
结束日期:item.end\u日期,
每日估计:项目。估计的小时数,
})
任务.开始日期.推送(项目.开始日期)
任务.结束日期.推送(项目.结束日期)
任务。下一个开始日期。推送(项目。开始日期)
}否则{
加速推({
project\u id:item.project\u id,//(item.project\u id==null)?“缺少项目\u id”:item.project\u id,
附表:[{
project\u id:item.project\u id,//(item.project\u id==null)?“缺少项目\u id”:item.project\u id,
开始日期:item.start\u日期,
结束日期:item.end\u日期,
每日估计:项目。估计的小时数,
}],
开始日期:[项目.开始日期],
结束日期:[项目.结束日期],
下一个开始日期:[项目.开始日期],
})
}
返回acc
}, [])
console.log(结果)

你好

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

ES6中添加了
find
,而ES5.1中添加了
reduce
,因此SuiteScript不支持
find
,而支持
reduce

资料来源:

  • 减少:
  • 查找:

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

ES6中添加了
find
,而ES5.1中添加了
reduce
,因此SuiteScript不支持
find
,而支持
reduce

资料来源:

  • 减少:
  • 查找:

这应该行得通。如果不支持
find
reduce
应该在
find
之前导致错误。据我所知,
find
总是在数组上使用。不确定netsuite运行什么,但可能它使用的引擎不支持它。也许可以加上polyfill,我以前没有做过任何polyfill。@epascarello,它成功了。我为find添加了一个polyfill。谢谢,这应该行得通。如果不支持
find
reduce
应该在
find
之前导致错误。据我所知,
find
总是在数组上使用。不确定netsuite运行什么,但可能它使用的引擎不支持它。也许可以加上polyfill,我以前没有做过任何polyfill。@epascarello,它成功了。我为find添加了一个polyfill。谢谢,伙计