2011-03-08 2 views
3

내가 이러한 인기 민요이 함유 선으로 객체의 인덱스 배열을 가정 삽입하거나 드래그 앤 드롭 순서 변경 후의 오브젝트의 배열)알고리즘 다시 인덱스

var lyrics = [ 
    {line : 2, words : "He's a lumberjack and he's okay"}, 
    {line : 1, words : "I'm a lumberjack and I'm okay"}, 
    {line : 3, words : "He sleeps all night and he works all day"} 
]; 

내 비교자는 각 객체의 색인에 따라 객체를보기에 표시합니다. 나는이 배열에있는 세 개의 작업을 수행 할 수 있도록하려면 :

작업 1) 색인화 드래그에가 앤

드래그를 통해 객체의 순서를 재 배열하고 드롭 놓습니다. 끌어서 놓기를 구현하는 방법을 이미 알고 있다고 가정합니다. 작업 예 : 색인 "1"에서 "나는 등재이고 괜찮습니다"를 드래그 한 후 "좋아요"라고 드래그하십시오. "그는 등산가이고 괜찮아"이제 색인 "2"를 차지하고 "나는 양어장이고 괜찮아"색인 1을 차지해야합니다. 결과 배열은 다음과 같아야합니다

삽입

var lyrics = [ 
    {line : 1, words : "I'm a lumberjack and I'm okay"}, 
    {line : 2, words : "He's a lumberjack and he's okay"}, 
    {line : 3, words : "He sleeps all night and he works all day"} 
]; 

작업 2) 다시 인덱스는 배열의 모든 항목을 색인화 배열에 어느 시점에 객체를 추가합니다. 작업 예 : "나는 밤새도록 잠을 자고 하루 종일 일합니다"개체를 배열의 두 번째 항목으로 추가합니다. 결과 배열은 다음과 같아야합니다

삭제

var lyrics = [ 
    {line : 1, words : "I'm a lumberjack and I'm okay"}, 
    {line : 2, words : "I sleep all night and I work all day"}, 
    {line : 3, words : "He's a lumberjack and he's okay"}, 
    {line : 4, words : "He sleeps all night and he works all day"} 
]; 

작업 3) 다시 인덱스가 배열에서 객체를 삭제하고 배열의 모든 항목을 인덱싱. 인덱스 "3"와 객체가 삭제 된 경우에 따라서, 예를 들어, 결과 배열은 다음과 같아야합니다

var lyrics = [ 
    {line : 1, words : "I'm a lumberjack and I'm okay"}, 
    {line : 2, words : "I sleep all night and I work all day"}, 
    {line : 3, words : "He sleeps all night and he works all day"} 
]; 

내가 CS 학위가없는 나는 종류의 날이 처리 도움이 무엇 알고리즘에 난처한 상황에 빠진거야 그래서 . 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

저는 자바 스크립트로 작업하고 있습니다. 위와 같은 작업을하는 사람이 누구라도 알고 있다면, 나는 모두 귀입니다.

+0

무엇 정확하게에 대해 혼란스러워? – Marcin

답변

8

나는 완전히 당신의 전체 구조를 단순화하는 것입니다 : 대신 별도의 키 (line) (적절하게 사용 된 경우) 자바 스크립트를 의미하는 키와 자바 스크립트 인덱스를 사용을 저장하는,

사용 네이티브 자바 스크립트 배열을 관리합니다 당신을 위해, 그리고 적은 메모리를 사용합니다.

그래서 우리는 문자열 배열을 가지고 :

var f = []; 
f.push('first'); 
f.push('third'); 
f.push('fourth'); 

// reindex on insert 
// lets insert second in the natural place 

f.splice(1,0,'second'); // ["first", "second", "third", "fourth"] 

// reindex on delete 
// lets delete 'third' 

f.splice(2,1); // ["first", "second", "fourth"] 

+0

그게 나를 위해 작동합니다. 전에는 스플 라이스를 사용하지 않았습니다. 감사. –

관련 문제