10

How can I push empty element to an existing Js array, lets assume :

var arr = [54,77,21];
var target = [54,77,21,,,,36];
arr.push(); //do not append an empty element into the array.
arr.push();

console.log(JSON.stringify(arr)); //output: [54,77,21]

How to append empty elements so "arr" will be equivalent to "target" array?

4
  • Nope I tried that it will append a string element [54,77,21,""] Commented Jul 25, 2019 at 8:03
  • 1
    Possible duplicate of How to represent an array with empty elements in JSON? Commented Jul 25, 2019 at 8:03
  • What you try to do? Why you need these empty elements? Maybe you need object for that: {0:54, 1: 77, 2: 21, 6: 36}? Commented Jul 25, 2019 at 8:04
  • @Justinas I have a chartjs and it require the array like this , so it will not render a point in there. Commented Jul 25, 2019 at 8:07

3 Answers 3

9

You could address the index directly. This builds a sparse array.

var arr = [54,77,21];

arr[6] = 36;
console.log(JSON.stringify(arr));

Or push undefined until you like to push the value. This returns a filled array.

var arr = [54,77,21];

arr.push(undefined);
arr.push(undefined);
arr.push(undefined);
arr.push(36);
console.log(JSON.stringify(arr));

By using JSON.stringify, you get for undefined or sparse items null, because JSON knows only null instead of undefined.

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

2 Comments

yes, i mentioned this. with stringifgy, you get undefined for sparse elements. later with parsing there is no difference.
JSON.stringify was confusing because it changes the empty element into null
6

You can use Array#length:

arr.length++;

You can set the length property to truncate an array at any time. When you extend an array by changing its length property, the number of actual elements increases; for example, if you set length to 3 when it is currently 2, the array now contains 3 elements, which causes the third element to be a non-iterable empty slot.

But note that JSON does not support sparse arrays. I.e. you cannot see empty slots with JSON.stringify.

var arr = [54,77,21];
arr.length++;
arr.length++;
arr.length++;
arr.push(36);
console.log(arr);

(FYI: Stack Snippets do not seem to support sparse arrays correctly. You need to run that code in the browser console instead.)

Comments

1

You could use the array.prototype.concat() method.

    var arr1 = [1, 2, 3, 4];

    var arrtarget = [1, 2, 3, 4, , , , 5, 6];

    console.log(arr1);
    console.log(arrtarget);

    newArr = arr1.concat([, , , 5,6]);

    console.log(newArr);

Alternatively, you could use the Array.Prototype.push() method as

arr1.push(undefined);

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.