0

I have the following code for moving one array item to another.

var data={"Used":[{"Items":[{"ID":1,"Name":"item1"},{"ID":2,"Name":"item1"}]}],"UnUsed":[{"Items":[]}]};    
data.UnUsed[0].Items.splice(0,0,data.Used[0].Items);    
var len=data.Used[0].Items.length;  
for(i=0;i<len;i++)  
{
    data.Used[0].Items.splice(0,1);
}   
console.log(JSON.stringify(data));

Current Output is:

{"Used":[{"Items":[]}],"UnUsed":[{"Items":[[]]}]} 

Expected Output is:

{"Used":[{"Items":[]}],"UnUsed":[{"Items":[[{"ID":1,"Name":"item1"},{"ID":2,"Name":"item1"}]]}]}
5
  • You want to move all Items from Used to Unused? Commented May 2, 2014 at 15:31
  • Yes, I tried to move all item from Used to UnUsed. Commented May 2, 2014 at 15:33
  • Then maybe like: data.UnUsed[0].items = data.Used[0].items.slice(0); data.Used[0].items = []; Commented May 2, 2014 at 15:36
  • if i use above code, i am getting this error 'Uncaught TypeError: Cannot call method 'slice' of undefined '. Commented May 2, 2014 at 15:44
  • You don't need to use slice/splice. Take a look at my answer and demo. Commented May 2, 2014 at 15:48

2 Answers 2

1

Here's one solution: http://jsfiddle.net/K3cz3/

var data={"Used":[{"Items":[{"ID":1,"Name":"item1"},{"ID":2,"Name":"item1"}]}],"UnUsed":[{"Items":[]}]};    
var len = data.Used[0].Items.length;
for (i = 0; i < len; i++) {
    data.UnUsed[0].Items.splice(0, 0, data.Used[0].Items[0]);
    data.Used[0].Items.splice(0, 1);
}
console.log(JSON.stringify(data));

Edit:

Here's a better one that makes it more clear what's happening:

var len = data.Used[0].Items.length;
for (i = 0; i < len; i++) {
    data.UnUsed[0].Items.push(data.Used[0].Items.pop());
}
console.log(JSON.stringify(data));

Fiddle: http://jsfiddle.net/K3cz3/1/

Or simply:

data.UnUsed[0].Items = data.Used[0].Items;
data.Used[0].Items = [];
console.log(JSON.stringify(data));

Fiddle: http://jsfiddle.net/K3cz3/2/

Sign up to request clarification or add additional context in comments.

Comments

1

You could do it this way - saves having to splice all over the shop.

data.UnUsed[0].Items = data.Used[0].Items;
data.Used[0].Items = [];

Demo

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.