获取子数组中的项目并放回主数组

Get item in sub array and put back to main array

我在获取子数组中的项目并通过 javascript 放回主数组时遇到问题。 我有这样的数组:

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
]

我想得到这样的结果: ['1595','8886','1112']

但是当我使用这段代码时:

array_demo.map(function(i) {
    return i.slice(1).join();
});

结果:['1595,8886', '1112']

有人可以帮助我吗?

而不是 join()map() 的返回结果上使用 Array.prototype.flat():

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
]
array_demo = array_demo.map(function(i) {
    return i.slice(1);
}).flat();
console.log(array_demo);

在使用 Arrow function(=>) 的一个班轮中:

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
]
array_demo = array_demo.map(i => i.slice(1)).flat();
console.log(array_demo);

您可以解构数组并在没有第一个元素的情况下取出其余部分,然后使用 Array.flatMap.

展平该数组

var array = [['1st', '1595', '8886'], ['2nd', '1112']],
    result = array.flatMap(([_, ...a]) => a);

console.log(result);

或者 Array.slice() 也可以。

var array = [['1st', '1595', '8886'], ['2nd', '1112']],
    result = array.flatMap(a => a.slice(1));

console.log(result);

您可以使用 Array.prototype.flat 后接 Array.prototype.filter 来删除子数组中的非数字数据:

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
];

const res = array_demo.flat().filter(n=> !isNaN(n));
console.log(res);

我们也可以使用 Array.prototype.reduce 来做到这一点,如果您的 objective 只是删除 0th 索引处的对象:

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
];

const res = array_demo.reduce((r, [_, ...e]) => { r.push(...e); return r}, []);
console.log(res);

你也可以使用array.reduce,使用方法如下:

array_demo.reduce( function(prev, curr, index) {
  return prev.concat(curr.slice(1)); 
} ).slice(1);

事情是,array.map,returns 数组中每个元素的结果。因此,在您的示例中,它有两个周期:

  1. ['1st', '1595', '8886'] -> returns '1595,8886' 因为你使用了 join()
  2. ['2nd', '1112'] -> returns '1112' 也是因为你使用了 join()

你在数组中得到它 -> ['1595,8886', '1112'].

array_demo.reduce((acc, array_element) => acc.concat(array_element.slice(1)), [])

Use Array.prototype.reduce()

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
]

var reduced_array = array_demo.reduce((reducedArray, elem) => {
  elem.shift() // Remove the first item
  return reducedArray.concat(elem)
}, [])

console.log(reduced_array)

当我们需要单个累加值时,可以使用reduce函数。

var array_demo = [
    ['1st', '1595', '8886'],
    ['2nd', '1112']
]

var l = array_demo.reduce((val, item)=> {
    return val.concat(item.slice(1));
},[]);

console.log(l);