Javascript多维嵌套数组,在单个数组中排序
Javascript multidimensional nested array, sort in single array
我是JavaScript的初学者,最近遇到了这个问题。我有一个阵列-
var array_input = [1,2, [1,2,3], [4,5,6, [9,8,10]]];
我想从下面的数组中出来,如下所示(需要使用for循环的答案(:
var array_output = [1,2,3,4,5,6,7,8,9,10]
您可以使用Set
和递归函数来压平结果,然后最后对其应用基本排序:
function getValues(arr) {
return [...arr.reduce( (acc, val) =>
new Set([...acc, ...(Array.isArray(val) ? getValues(val) : [val])]), [])];
}
// Sample input
var array_input = [2,1, [1,3,2], [4,5,6, [9,8,10]]];
// Get values and sort them
var result = getValues(array_input).sort( (a,b) => a-b );
// Show output
console.log(result);
替代对象键
同样的原理也可以用于使用值作为键的对象,尽管我更喜欢Set
方式。由于对象键是按数字顺序迭代的(当它们是数字时(,因此这里不需要显式排序步骤:
function getValuesAsKeys(arr) {
return arr.reduce( (acc, val) =>
Object.assign(acc, Array.isArray(val) ? getValuesAsKeys(val) : { [val]: val }), {} );
}
// Sample input
var array_input = [2,1, [1,3,2], [4,5,6, [9,8,10]]];
// Get values and sort them
var result = Object.values(getValuesAsKeys(array_input));
// Show output
console.log(result);
注意:Object.values
方法目前几乎没有支持。可以使用Object.keys(getValues(array_input)).map(Number)
,因为在这个对象中,键是值,但在字符串类型中(当然(。
数字字符串数字可选
将数组转换为字符串是另一种可能性,但我真的不喜欢在最终需要数字而不是字符串时进行转换。
好的,我使用了来自不同来源的一堆东西。首先压缩数组,@Thalaivar的回答将其固定。
var array_input = [1,2, [1,2,3], [4,5,6, [9,8,10]]];
var pArray = array_input.join().split(',').map(Number);
然后,使用这个答案和一些轻微的修改(实现数字排序(,我们将在排序时从数组中删除任何重复项:
function uniqSort(a) {
return a.sort(function sortNumber(a,b) {
return a - b;
}).filter(function(item, pos, ary) {
return !pos || item != ary[pos - 1];
})
}
然后调用那个函数。
var array_output = uniqSort(pArray);
var array_input = [1,2, [1,2,3], [4,5,6, [9,8,10]]];
console.log(array_input.join().split(',').map(Number));
你可以使用上面的。。。https://jsfiddle.net/vp9kq3a8/
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 数组在单个输入中返回
- 从数组/字符串中删除所有小数和单个数字
- 如何创建具有单个元素或元素数组的数组
- Google Web App 将单元素数组视为单个字符的数组
- 基于单个属性从数组中获取唯一对象
- 数组循环以获取单个值
- 使用jQuery deffered.resolveWith()在单个参数中传递数组
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 将 CSS 类添加到数组中的单个元素
- 仅包含某些数组值的单个弹出窗口.JavaScript
- 在MongoDB中,从文档中获取单个字段数组的最简单方法是什么
- 来自单个请求的 ajax 请求数组
- 获取数组角度的单个属性
- 使用 lodash 是将数据从数组映射到单个数组的好方法
- 如何在单个语句中的 $$('selector') 数组上使用 PrototypeJS .wrap()
- 在javascript(Angularjs)中将对象数组转换为单个对象
- 更改 JS 数组中的单个对象会更改所有元素
- 从数组中获取所有单个单词
- 从 Web 服务返回单个 json 对象的数组