Convert string containing arrays to actual arrays [duplicate] - javascript

This question already has answers here:
Convert string with commas to array
(18 answers)
Closed 7 years ago.
I have no idea why I'm having so much trouble with this. This seems like it should be really simple.
I have a JavaScript string like the following:
var str = '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]';
I actually want to convert this into an array of arrays. str.split(',') doesn't work because it'll split on the commas in the inner arrays.
I'm sure this conversion is probably something stupidly simple, but I must be missing it. Any help would be appreciated.

The string str confirms to the JSON spec, so it can be parsed with JSON.parse.
var arr = JSON.parse(str);

var str = '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]';
var arr = JSON.parse("[" + str + "]");
console.log(arr[0][0]); // [1, 2, 3]
console.log(arr[0][0][0]); // 1
You may use JSON.parse, more info here
https://jsfiddle.net/5yz95ktg/

Related

How do make a JSON from an array [duplicate]

This question already has answers here:
Convert array to JSON
(12 answers)
Closed 6 months ago.
This post was edited and submitted for review 5 months ago and failed to reopen the post:
Original close reason(s) were not resolved
Array:
myArr = [[1, 2, 3], [4, 5, 6]]
Expected output:
newArr = "[[1, 2, 3], [4, 5, 6]]"
I have tried:
myArr.toString()
String(myArr)
myArr = `${myArr}`
What I got by doing the above methods:
'1,2,3,4,5,6'
I gather what you would like to achieve is more or less serialization. We could use JSON.stringify in JavaScript to serialize an Array.
const array = [[1, 2, 3], [4, 5, 6]];
const serializedArray = JSON.stringify(arr));
To deserialize the Array, JSON.parse could be used.
const originalArray = JSON.parse(serializedArray));
JSON.strinify is what you need.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
const myArr = [[1, 2, 3], [4, 5, 6]];
const myArrString = JSON.stringify(myArr);
console.log(`Here is my string: ${myArrString}`);
use JSON.stringify(myArr);
you can find out more on below link
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

How to convert an array of integers to a single digit

let's say I have got an array of [2, 4, 5, 6].
I want to be able to convert it to 2456.
Is there an easy and elegant way to do this in JavaScript?
I am aware of this question.
Using Array#join:
const arr = [2, 4, 5, 6];
const str = arr.join('');
console.log('string', str);
console.log('number', +str);

Most efficient way to flatten Array<Array<T> | T> in JavaScript [duplicate]

This question already has answers here:
Merge/flatten an array of arrays
(84 answers)
Closed 3 years ago.
I want to create a function that accepts an array of both arrays and literals (or maybe objects) and flattens it to a single dimensional array. For example a valid input would be [5, [2, 3], 7, [9, 0, 1]], and the output of that input should be [5, 2, 3, 7, 9, 0, 1].
This is the code I have so far. There is nothing wrong with it, I just want to make sure it's as efficient as possible (it also needs to be es5 compatible).
function flattenArray(list) {
var result = [];
for (var index = 0; index < list.length; index++) {
result.push(list[index] instanceof Array ? list[index] : [list[index]]);
}
return [].concat.apply([], result);
}
console.log(flattenArray([5, [2, 3], 7, [9, 0, 1]]));
How about simply using Array.flat
function flattenArray(list) {
return list.flat()
}
console.log(flattenArray([5, [2, 3], 7, [9, 0, 1]]));
This seems to be second fastest ( based on the test link attached below ) and ES5 compatible
console.log([].concat.apply([],[5, [2, 3], 7, [9, 0, 1]]))
Performace test
Cocerning your code: There is no sense in wrapping single elements into arrays, .concat will handle them correctly, in other words:
[1].concat([2], 2)
just works, there is no need for wrapping 2 into [2]. That turns your code into a oneliner.

JS: Make new array form duplicate values [duplicate]

This question already has answers here:
Simplest code for array intersection in javascript
(40 answers)
Compute intersection of two arrays in JavaScript [duplicate]
(4 answers)
Finding matches between multiple JavaScript Arrays
(13 answers)
Closed 5 years ago.
Let's take two arrays for example:
a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]
Now there is duplicates as we see 4 and 5. How to make new array from them instead of getting rid of them. What is the easiest solution?
So new array should be like:
newArray = [4, 5]
Thank you guys in advance!
You can do it using Array.filter() and Array.includes()
let a = [1, 2, 3, 4, 5];
let b = [4, 5, 6, 7, 8];
let arr = a.filter(function(x){
return b.includes(x);
})
console.log(arr);

How to append new array to beginning of multi-dimensional array [duplicate]

This question already has answers here:
How can I add new array elements at the beginning of an array in JavaScript?
(12 answers)
Closed 5 years ago.
The community reviewed whether to reopen this question 9 months ago and left it closed:
Original close reason(s) were not resolved
I have a 2 dimensional array called vArr. It looks like follows...
vArr = [[1, 1], [2, 2], [3, 3]];
What I am trying to do, is move all the array elements along when a new array needs to be appended to the beginning of vArr, and then delete the last element of vArr to preserve its size (in this case 3). So for example, if a new element [4, 4] comes along that I want to append to vArr, the new vArr should look like this..
vArr = [[4, 4], [1, 1], [2, 2]];
[4, 4] has been appended to the beginning, all the other elements have moved along and any remaining elements past the vArr size of 3 (namely [3, 3]) have been removed. Here is my code so far...
var vArr = [[1, 1], [2, 3], [3, 3]];
var newv = [4, 4]; // New array to append
// My attempt at splicing newv to position 0 in vArr array without removing anything
vArr = vArr.splice(0, 0, newv);
// newv logs to the console successfully, however vArr is undefined for some reason
console.log(newv);
console.log(vArr);
// Get rid of final element (doesn't work because vArr is no longer defined from above)
vArr = vArr.pop();
I know there is probably something wrong with the syntax in the splicing line, but I have been unable to find any information online about what is wrong here. Does the splice method have to change if you are splicing arrays into 2D arrays? Or does it not work at all in this instance? Any help is greatly appreciated!
Here you go with the solution https://jsfiddle.net/fkz9ubug/
var vArr = [[1, 1], [2, 3], [3, 3]];
var newv = [4, 4];
vArr.unshift(newv)
console.log(vArr);
Documentation
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift
https://www.w3schools.com/jsref/jsref_unshift.asp
The problem is with assigning the result of vArr.splice(0, 0, newv) back to vArr.
The splice function can also remove items from the array and the return value of splice() is those removed items.
So vArr = vArr.splice(0, 0, newv); should simply be vArr.splice(0, 0, newv);.
You can use unshift() for pushing the new array at the beginning of the original array, and pop() to remove the last element from the array:
var vArr = [[1, 1], [2, 2], [3, 3]];
var arrToPush = [4, 4];
vArr.unshift(arrToPush);
vArr.pop();
console.log(vArr);

Categories

Resources