2017-12-21 4 views
0

이것은 실망 스럽습니다. 문제가 API 응답에 의해 반환되는 개체라고 생각했습니다. 어쩌면 그것은 문자열에 있기 때문에 내가 한 것은 "우편 배달부"의 응답을 복사하여 js에 직접 붙여 넣는 것입니다. 이 방법은 객체/배열에 있는지 확인합니다. 그러나 그 결과는 같은 오류였다.TypeError : 개체에서 함수 찾기를 찾을 수 없습니다.

왜 내 코드가 netsuite에서 작동하지 않습니다. 아래 코드는 매우 간단합니다. 내 로컬 컴퓨터에서 실행 해보니 효과가있었습니다. .find는 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>

어떤 도움

이 크게 감사합니다.

+0

. 'find'가 지원되지 않는다면,'reduce'는'find' 전에 ​​에러를 일으켰을 것입니다. 그리고'find'는 배열에서 항상 사용할 수 있습니다. – Xufox

+2

어떤 netsuite가 실행되는지 모르지만 사용하는 엔진이 지원하지 않을 수 있습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find – epascarello

+0

이전에 polyfill을 추가하지 않았습니다. –

답변

3

문제를 해결하기 위해 polyfill을 추가했는데, NetSuite/SuiteScript가 ECMAScript 5.1을 사용한다는 것이 문제의 해결책입니다. 그 엔진은 Java Rhino입니다 (어떤 버전인지는 알 수 없습니다).

find이 ES6에 추가되었지만 reduce이 ES5.1에 추가되었으므로 SuiteScript는 find을 지원하지 않으며 reduce을 지원합니다.

출처 :

관련 문제