2017-04-03 15 views
0

배열 내에서 개체 속성의 서식을 지정하려고합니다. 다음 코드는 다음과 같은 오류가 발생하지만, 반응 네이티브 오브젝트의 나머지 부분을 건드리지 않고 TypeError: In this environment the sources for assign MUST be an object.This error is a performance optimization and not spec compliant. <<< path/to/project/node_modules/react-native/packager/src/Resolver/polyfills/polyfills.js맵 값 다시 형식 지정 및 스프레드 연산자로 업데이트

const objArr = [ 
    { event.date: '2016-03-10T00:00:00', event.location: 'NV' }, 
    { event.date: '2016-03-10T00:00:00', event.location: 'WV' }, 
    { event.date: '2016-03-10T00:00:00', event.location: 'CA' } 
], 

const formatDate = (data) => { 
    const formattedDate = moment(data['event.start_date']).format('DD MMM YYYY'); 

    return { ...data, data['event.start_date']: formattedDate } }; 
} 

const formatDates = (arr) => { return _.map(arr, formatDate) } 

let result = _.map(objArr, formatDates); 

어떻게 내가 형식의 데이터에 event.date을 바꿀 것 던진다 나는 몇 가지 문제가 있어요? 실제로는 많은 변수를 전달하고 싶습니다. 개별적으로 새 객체에 할당하는 것이 최선이라고 생각하지 마십시오.

어떻게해야합니까? 어떤 도움/팁 감사!

+0

게시 한 샘플 객체는 나에게별로 의미가 없습니다. objArr은'[{{ "event": { "date": "2016-03-10T00 : 00 : 00", "location": "NV"}}]와 같이 보이거나'[{{event] 날짜 ":"2016-03-10T00 : 00 : 00 ","event.location ":"NV "}]]'? –

+0

그들은 중첩되어 있지 않습니다. 점 개념은 단지 문자열입니다. – Chris

답변

1

여러 map을 사용하여 작업을 크게 복잡하게 만드는 것처럼 보입니다. 문제를 단순화 경우

, 당신은이 작업을 수행 할 수 있어야한다 : @fubar의 대답에

const objArr = [ 
    { 'event.date': '2016-03-10T00:00:00', 'event.location': 'NV' }, 
    { 'event.date': '2016-03-10T00:00:00', 'event.location': 'WV' }, 
    { 'event.date': '2016-03-10T00:00:00', 'event.location': 'CA' } 
]; 

const result = objArr.map((event) => ({ 
    ...event, 
    'event.start_date': moment(event['event.start_date']).format('DD MMM YYYY'), 
})); 

console.log(result); 
0

자료. delete 메서드를 사용하여 객체 속성을 간단하게 삭제할 수 있습니다.

참조 : 그 전에 http://perfectionkills.com/understanding-delete/

, 우리는 속성을 저장할 임시 변수를 사용하여 사용하도록 포맷해야합니다. 그리고 코드는 예상 한 결과와 함께 진행됩니다.

const result = objArr.map((item) => { 
    var rawEventDate = item['event.date']; 
    delete item['event.date']; 
    return { 
    'event.date': moment(rawEventDate).format('DD MMM YYYY'), 
    ...item 
    } 
}); 

console.log(result);