2013-04-20 5 views
0

2d 어레이에서 판매 된 품목의 가격과 수를 나타내는 일련의 변수가 있습니다. 내가 최저 가격을 찾기 위해 그것을 정렬했습니다.값 대신 배열에 저장된 변수를 어떻게 참조합니까?

배열을 참조하여 첫 번째 항목 (플레이어 A)의 두 번째 변수 (판매 수)를 값 (200)으로 설정하고 싶습니다. 예를 들어

는 : playerASold 현재 0의 값을 가지고 있기 때문에

var playerASold; 

var arr=[ 
    [playerAPrice,playerASold], 
    [playerBPrice,playerBSold], 
    [playerCPrice,playerCSold]]; 

arr[0][1]=200; 

이 아마 작동하지 않습니다는 0 = 0을 설정하기 위해 노력하고있다.

변수의 값이 아닌 변수를 참조하려면 어떻게해야합니까?

답변

2

JavaScript에는 C의 포인터 또는 C++ 참조가 없다는 점에서 다른 방식으로 사용해야합니다. 배열에 참조를 저장하는 대신 배열을 데이터의 유일한 소유자로 지정하십시오. 다음과 같을 수
:

var players = [ 
    { price: 5, sold: 1 }, 
    { price: 3, sold: 6 }, 
    { price: 9, sold: 2 } 
]; 

을 그리고 오히려 playerBSold, 말,보다, 당신은 players[1].sold를 사용할 수 있습니다. 원하는 경우 1 대신 변수를 사용할 수 있습니다.

+0

판매량이 설정되지 않은 것이 문제입니다. 나는 가장 값싼 선수가 누구인지 알아 내서 팔리는 선수를 결정할 것이다. 저는 5 명의 사람들이 텍스트 상자에 가격을 입력하고, 그 다음에 자바 스크립트를 사용하여 가격을 파악하고 가장 낮은 가격을 확인합니다. 저는 선수들에게 재주문을하는 일종의 일을하고 있습니다. 나는 가장 낮은 가격의 선수들만으로부터 제품을 구매하고 그들 사이에 주식을 나누기를 원한다. 나는이 솔루션으로 승자가 누구인지 추적 할 수있는 방법을 모르겠습니다. 그래서 나는 가격에 부착 된 플레이어의 이름을 유지하고 싶었습니다. 말이 돼? –

+0

@ThomasGaskin : 플레이어의 이름을 'name'속성 (예 :'{name : "A", price : 5, sold : 1}')으로 유지할 수 있습니다. 속성을 언제든지 추가 할 수 있다는 점은 주목할 가치가 있습니다. 플레이어들도 균형을 잡아서 사용할 수 있습니다. – icktoofay

+0

@ThomasGaskin : 이와 같이 모든 객체를 배열하면 정렬이 쉽습니다. 'players.sort (function (a, b) {return a.price-b.price;});' 가격'을 가장 큰'가격'으로했다. – icktoofay

0

배열에 값을 설정하는 코드를 자세히 살펴보면 arr [0] [1] item value.previously 이전의 값은 playerASold ie 0이었습니다. 이제 playerSold에 값을 지정하지 않았습니다. 이 같은 수도 있었죠 :

var arr=[[playerAPrice:0,playerASold:0],[playerBPrice:0,playerBSold:0], [playerCPrice:0,playerCSold:0]]; 

이를 사용합니다 (이 경우 번호에)

arr[0].playerASold=200. 
0

자바 스크립트 프리미티브 불변합니다. 나는 그들의 가치를 바꿀 수 없다. 숫자 작업은 새로운 숫자를 만듭니다. 그러나 객체는 변경할 수 있습니다.

icktoofay가 제안했듯이 가격 및 판매 된 속성을 가진 변경 가능한 Player 개체로 리팩토링하는 것이 좋습니다.

관련 문제