2016-10-31 8 views
2

이 질문의 외설스러운 제목에 대해 유감스럽게 생각합니다. 더 이상 간결하게 문제를 설명 할 수 없습니다.나중에 코드에서 데이터를 출력하는 Console.log

내 코드에서 무슨 일이 일어나는지 알 수 없습니다! ,

var fruits = {name: "bananas", quantity: "3"} 

그리고 값이 2

console.log(fruits); 
alert(fruits[0].quantity); //outputs 3 
fruits[0].quantity = Number(fruits[0].quantity) + Number($("#qty").val()); 
alert(fruits[0].quantity); //outputs 5 

이 모든 것을 실행 한 후 문제를 (의 말)하자되는 수량 입력 필드 (#qty) : 나는 다음과 같습니다 개체가 console.log(fruits);의 출력을 검사하기 위해 콘솔에 들어가면 콘솔에 {name: "bananas", quantity: 5}이 표시됩니다.

P. 추가 된 수량과 따옴표의 부족을 확인하십시오!

어떤 아이디어가 있습니까?

+0

왜'과일 [0]'? 배열이나 '0'이라는 속성이 없습니다. 코드가 전혀 실행되지 않아야합니다 (그렇다면 결과는 정확할 것입니다.). –

+0

'경고 (fruits [0] .quantity); // outputs 3' - no, 정의되지 않은 값의'quantity'를 읽으려고하기 때문에 예외를 던집니다. 우리에게 진짜를 보여주세요 [MCVE] – Quentin

+0

모두에게 감사드립니다. 'fruits '보다는'fruits [0]'을 포함하는 이유는'[0]'을 생략하면''undefined''와''NaN''이''alert() s''가됩니다. @Quentin, 왜 당신이 그것의 정의되지 않은 가치를 생각하는지 모르겠다. 그러나 네, 그것은 중복 된 제안이 답인 것처럼 보입니다. 콘솔이 실제로 그것을 기록하기 전에 변수가 조작 (추가)되기 때문에 변수 자체가 아닌 변수의 복사본을 console.log에 제안했습니다. 콘솔이 실제로 그것을 기록하기 때문에 마침내 로깅 할 때 추가 된 내용이 표시됩니다 값. – Brad

답변

1

당신은 당신이 그것을보고있는 시간에 객체의 현재 상태를 표시하는 JSON의 상태를 기록합니다. 개체콘솔에서 열면 언제든지 최신 변경 사항이 표시됩니다.

<script> var fruits = {name: "bananas", quantity: "3"} 
 
function fnincrement1(){ 
 
console.log(fruits); 
 
    
 
} 
 
function fnincrement2(){ 
 
fruits.quantity = Number(fruits.quantity)+3; 
 
console.log(fruits); 
 
    
 
} 
 
</script> 
 
<button onclick='fnincrement1()'> 
 
button1 
 
</button> 
 

 
<button onclick='fnincrement2()'> 
 
button2 
 
</button>

당신은 명확성을 위해 the video of the above code을 볼 수 있습니다.

0

우선, 객체에서 값을 가져 오는 잘못된 방법, 즉 fruits 변수 (json은 유효한 객체)를 사용하고 있습니다. 객체의 속성을 가져 오는 방법은 두 가지가있다 : 당신이 알고있는 경우 첫 번째 양식을 사용

obj["key2"] 

: 대괄호 표기법을 사용

obj.key1 

: 점 표기법을 사용하여

var obj = { 
    key1: value1, 
    key2: value2 
}; 

은 속성의 이름. 두 번째 양식은 속성의 이름이 동적으로 결정될 때 사용됩니다.

내 생각 엔 개체 배열을 가지고있는 것 같습니다.

뭔가 같은 : 그래서이 경우 당신은 같은 일을하는 경우

var fruits = [ 
{name: "bananas", quantity: "3"}, 
{name: "apples", quantity: "4"}, 
... 
]; 

- 당신이 과일 배열 즉, {이름의 첫 번째 객체 선택하는

fruits[0].quantity = Number(fruits[0].quantity) + Number($("#qty").val()); 

: "바나나 ", 수량 :"3 "} '수량'속성을 3 + 2 (숫자 (fruits [0] .quantity) + 숫자 ($ ("# qty "). (기억하십시오 : Number()를 사용하여 명시 적으로 캐스팅했기 때문에 문자열이 아닌 숫자입니다). 그래서 console.log에서 따옴표가 보이지 않습니다.

Number()는 숫자 형식의 값을 반환하는 javascript의 함수입니다. 그래서 만약 당신이 Number ("30")과 같은 것을하면 숫자가 아닌 문자열로서 30을 반환 할 것입니다.

2

fruits[0].quantity에 할당되는 수량이 Number이기 때문입니다. 이 수량이 String 인 경우 큰 따옴표 "이 표시됩니다.

그럼 String에 함수를 사용하여 javascript을 사용하여이 숫자를 유형 변환 할 수 있습니다.

fruits[0].quantity = String(Number(fruits[0].quantity) + Number($("#qty").val())); 

출력

{name: "bananas", quantity: "5"}