Home > Back-end >  JS create new array from certain item
JS create new array from certain item

Time:07-19

I have 2 dimensional array myArray:

[
  [ '567576', 'John', 'Doe' ],
  [ '098897', 'John', 'Doe' ],
  [ '543539', 'John', 'Doe' ],
  [ '234235', 'John', 'Doe' ],
  [ '345348', 'John', 'Doe' ],
  [ '432574', 'John', 'Doe' ]
]

Is it possible to create a new array from myArray starting from a certain first value? For example create a new array starting from id 543539. Anything above the array containing 543539 will not be added.

CodePudding user response:

You can make use of findIndex() which returns the index of the first item that matches the condition. Combine it with slice() to cut your array at the specific position:

const myArray = [
  ['567576', 'John', 'Doe'],
  ['098897', 'John', 'Doe'],
  ['543539', 'John', 'Doe'],
  ['234235', 'John', 'Doe'],
  ['345348', 'John', 'Doe'],
  ['432574', 'John', 'Doe']
]

console.log(myArray.slice(myArray.findIndex(item => item[0] === "543539")));

CodePudding user response:

const arr=[
  [ '567576', 'John', 'Doe' ],
  [ '098897', 'John', 'Doe' ],
  [ '543539', 'John', 'Doe' ],
  [ '234235', 'John', 'Doe' ],
  [ '345348', 'John', 'Doe' ],
  [ '432574', 'John', 'Doe' ]
];

const res=arr.slice(arr.findIndex(a=>a[0]=='543539'));

console.log(res);

CodePudding user response:

Sure, assuming all the internal arrays are structured the same way, you can do something like let newArray = myArray.filter(innerArray => Number(innerArray[0]) > 543539)

Edit: This is assuming you want all subarrays where the first item is a number larger than 54539, as opposed to finding all of the subarrays that physically follow the first occurrence of a subarray with 54539 as the first value

CodePudding user response:

Yes, that is possible and straightforward process. You can use the javascript map method which returns a new array

newArray = myArray.map(item=> item[0])
  • Related