获取子数组中的项目并放回主数组
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 数组中每个元素的结果。因此,在您的示例中,它有两个周期:
- ['1st', '1595', '8886'] -> returns '1595,8886' 因为你使用了 join()
- ['2nd', '1112'] -> returns '1112' 也是因为你使用了 join()
你在数组中得到它 -> ['1595,8886', '1112'].
array_demo.reduce((acc, array_element) => acc.concat(array_element.slice(1)), [])
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);
我在获取子数组中的项目并通过 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 数组中每个元素的结果。因此,在您的示例中,它有两个周期:
- ['1st', '1595', '8886'] -> returns '1595,8886' 因为你使用了 join()
- ['2nd', '1112'] -> returns '1112' 也是因为你使用了 join()
你在数组中得到它 -> ['1595,8886', '1112'].
array_demo.reduce((acc, array_element) => acc.concat(array_element.slice(1)), [])
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);