2017-12-13 1 views
0

SOLVED,이 코드가 존재하는 함수가 더 자주 호출됩니다.이 값은 정의 될 수 없기 때문에 중첩 된 객체 리터럴에 값을 추가하면 작동하지 않습니다. 내 솔루션은 response.times is defined 및이 경우에만 값을 추가하는지 확인하는 것이 었습니다.어떻게 중첩 된 객체 리터럴에 키/값 쌍을 추가 할 수 있습니까?

저는 현재 자바 스크립트 객체 내의 객체에 키 - 값 쌍을 추가하려고 할 때 약간의 문제가 있습니다.

나는 내 질문에 가까운 것을 찾을 수 없기 때문에 주로 다음 주제에서 해결책을 살펴 보았습니다.

How can I add a key/value pair to a JavaScript object?

는 내가 객체가 무리 또는 내 응용 프로그램이 느린 얻는 곳 (서버, 데이터베이스를 조회 등)를 결정하기 위해 사용 executiontimes 반환받을 상황에있어. 그러나이 모든 시간은 서버에서 전달 된 응답 객체에 있습니다.

이 변경하려면이 모든 시간에 대한 응답 내에서 특정 개체를 만들었습니다. 문제는이 객체로 변경하기 전에 모든 타임 스탬프를 주 응답 객체에 추가하는 것입니다.

response.times = { 
    'executionTime': response.executionTime, 
    'processingTime': response.processingTime, 
} 

나는이 모든 타임 스탬프가 알려진 즉시이 개체에 추가 할 수 있기를 바랍니다. 응답 오브젝트에 값을 추가

여러 가지 방법으로 수행 할 수 있습니다

response.executionTime = 'x'; 
response['executionTime'] = 'x'; 
Object.assign(response, {executionTime: 'x'}); 
response.push({executionTime: 'x'}); 

을하지만 이런 식으로 뭔가를 할 노력하고있어 어디에 이러한 방법 중 어느 것도 경우에 작동하지, 난 오류 이 코드를 가져 오는 것은 Cannot read property ... of undefined입니다. 모든 경우에 값이 설정되어 있어도 시간은 정의되지 않은 것처럼 보입니다.

response.times.executionTime = 'x'; 
response.times['executionTime'] = 'x'; 
Object.assign(response.times, {executionTime: 'x'}); 
Object.assign(response['times]', {executionTime: 'x'}); 
response.times.push({executionTime: 'x'}); 
response['times'].push({executionTime: 'x'}); 

올바른 방법이 있습니까?

+0

는 모든 코드 사이의 관계를 이해하기 어렵다 ...하지만 내 생각 엔 당신은 단순히 당신이 어떤하는 오류를 얻을 수 있나요 response.times – Salketer

+0

을 정의하지 않는 것이 무엇입니까? – Faly

+0

Object.assign (response [ 'times]'{executionTime : 'x'}); 오타가 있습니다, 오타가 있습니까? – Salketer

답변

0

응답을 확인 객체 또는 빈 객체 대신 , 정의되지 않은 있습니다 및 response.times, ... :

var response; 
 
    response = response || {}; 
 
    response.times = response.times || {}; 
 
    response.times.executionTime = 'x'; 
 
    console.log(response);
여기

+0

이것은 논리적 인 해결책 인 것처럼 보이지만 여전히 Uncaught TypeError를 받고 있습니다 : undefined의 'executionTime'속성을 설정할 수 없습니다. –

+0

코드 스 니펫을 실행하여 정상적으로 작동하는지 확인하십시오 – Faly

+0

코드 조각이 올바르게 작동하고 있으며, 내 코드에는 정의되지 않은 경우가 있기 때문에 결함이있었습니다. –

0

코드가 작동 (나는 배열을 위해 .push()을 제거했다.) 속성을 추가하기 전에 response 개체와 response.times 개체를 정의하면됩니다.

response = { 
 
    times: {} 
 
}; 
 
response.times.executionTime1 = 'x'; 
 
response.times['executionTime2'] = 'x'; 
 
Object.assign(response.times, { 
 
    executionTime3: 'x' 
 
}); 
 
Object.assign(response['times'], { 
 
    executionTime4: 'x' 
 
}); 
 

 
console.log(response);

+0

그러나 이것은 발생하지 않는 응답 (및 시간) 객체를 지 웁니다 (잘못된 것을 제거함에 따라 주석을 다시 추가 함). –

+0

네, 맞습니다. 모두는 제공되지 않은 필요와 상황에 달려 있습니다. 다행 이군! – Salketer

관련 문제