UNPKG

1.45 kBJavaScriptView Raw
1import { factory } from '../../utils/factory'
2import { clone } from '../../utils/object'
3import { validateIndex } from '../../utils/array'
4
5const name = 'row'
6const dependencies = ['typed', 'Index', 'matrix', 'range']
7
8export const createRow = /* #__PURE__ */ factory(name, dependencies, ({ typed, Index, matrix, range }) => {
9 /**
10 * Return a row from a Matrix.
11 *
12 * Syntax:
13 *
14 * math.row(value, index)
15 *
16 * Example:
17 *
18 * // get a row
19 * const d = [[1, 2], [3, 4]]
20 * math.row(d, 1) // returns [[3, 4]]
21 *
22 * See also:
23 *
24 * column
25 *
26 * @param {Array | Matrix } value An array or matrix
27 * @param {number} row The index of the row
28 * @return {Array | Matrix} The retrieved row
29 */
30 return typed(name, {
31 'Matrix, number': _row,
32
33 'Array, number': function (value, row) {
34 return _row(matrix(clone(value)), row).valueOf()
35 }
36 })
37
38 /**
39 * Retrieve a row of a matrix
40 * @param {Matrix } value A matrix
41 * @param {number} row The index of the row
42 * @return {Matrix} The retrieved row
43 */
44 function _row (value, row) {
45 // check dimensions
46 if (value.size().length !== 2) {
47 throw new Error('Only two dimensional matrix is supported')
48 }
49
50 validateIndex(row, value.size()[0])
51
52 const columnRange = range(0, value.size()[1])
53 const index = new Index(row, columnRange)
54 return value.subset(index)
55 }
56})