类型错误:在对象中找不到函数 find [英] TypeError: Cannot find function find in object
问题描述
这令人沮丧.我认为问题是 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
.
来源:
- 减少:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce#Specifications
- 查找:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Find#Specifications
这篇关于类型错误:在对象中找不到函数 find的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!