Javascript 创建多维数组,然后为每个多维数组推送另一个数组
是否可以创建一个多维数组,然后在每个多维数组上推送另一个数组?? 比如说变量Javascript 创建多维数组,然后为每个多维数组推送另一个数组,javascript,arrays,loops,object,multidimensional-array,Javascript,Arrays,Loops,Object,Multidimensional Array,是否可以创建一个多维数组,然后在每个多维数组上推送另一个数组?? 比如说变量 arr = ["apple", "orange", "Avocados", "Tomato", "Tangerine"] 我想要的输出是: [ [“a”、[“苹果”、“鳄梨”], [“o”、[“橙色”], [“T”、[“西红柿”、“纠缠”]] ]我认为您的输出太复杂,无法生成。您可以简化输出格式,如下所示: { "a" : ["apple", "avocados"], "o": ["orange"]
arr = ["apple", "orange", "Avocados", "Tomato", "Tangerine"]
我想要的输出是:
[
[“a”、[“苹果”、“鳄梨”],
[“o”、[“橙色”],
[“T”、[“西红柿”、“纠缠”]]
]
我认为您的输出太复杂,无法生成。您可以简化输出格式,如下所示:
{
"a" : ["apple", "avocados"],
"o": ["orange"],
"t": ["Tomato", "Tangering"]
}
您可以使用Lodash轻松地生成如下输出:
_.groupBy(["apple", "orange", "Avocados", "Tomato", "Tangerine"], function (item) {
return item[0].toLowerCase()
});
或者使用迭代数组:
var arr = ["apple", "orange", "Avocados", "Tomato", "Tangerine"];
var output = [];
for (var i = 0 ; i < arr.length ; i++){
if (output[arr[i][0].toLowerCase()] == undefined)
output[arr[i][0].toLowerCase()] = [];
output[arr[i][0].toLowerCase()].push(arr[i]);
}
var arr=[“苹果”、“橙子”、“鳄梨”、“番茄”、“橘子”];
var输出=[];
对于(变量i=0;i
您可以通过查找具有值的数组对数据进行分组,或者为结果集创建新数组
var数组=[“苹果”、“橘子”、“鳄梨”、“番茄”、“橘子”],
结果=数组。减少((r,s)=>{
var temp=r.find(([c])=>c==s[0]);
如果(临时){
温度[1]。推送;
}否则{
r、 推送([s[0],[s]]);
}
返回r;
}, []);
控制台日志(结果)代码>
。作为控制台包装{max height:100%!important;top:0;}
您可以将数组简化为对象
var arr=[“苹果”、“橙子”、“鳄梨”、“番茄”、“橘子”];
var输出=arr.REDUCT(功能(res,项目){
if(Object.keys(res.indexOf)(item.charAt(0.toLowerCase())=-1)
{
res[item.charAt(0.toLowerCase()]=[];
}
res[item.charAt(0.toLowerCase()).push(item);
返回res;
},{});
控制台日志(输出)代码>使用普通JavaScript和一些函数编程的另一种选择:
const输入=[“苹果”、“橘子”、“鳄梨”、“西红柿”、“橘子”]
//(1)所有给定输入字的小写首字母的唯一列表
//*Set为我们提供了独特的行为
常量首字母=[…新集合(
input.map(([initial])=>initial.toLowerCase())
)]
常量byInitial=([initial])=>([initial_41;]=>
initial_uu.toLowerCase()==initial
//(2)这将每个世界按其初始值进行分组
//迭代每个降低的初始值并按每个初始值过滤输入
//建立团队!
const grouped=首字母缩写.reduce((o,首字母)=>
[
…o,//使用,创建一个对象,每个项的第一个字符作为键,所有以该字符开头的项的数组作为值。然后调用以获得所需的输出:
const arr=[“苹果”、“橘子”、“鳄梨”、“西红柿”、“橘子”],
group=Object.entries(arr.reduce((a,i)=>((a[i[0]]=a[i[0]]| |[])。push(i,a),{});
console.log(group);
案例是否重要?给定的数据与想要的输出不匹配。顺便说一句,您尝试了什么?我想要的输出在盒子@NinaScholzare上您确定这就是您想要的输出吗?我认为这种输出格式要好得多:{“a”:[“apple”,“avocados”],“o”:[“orange”],“t”:[“Tomato”,“Tangering”}是的,我确信,如果输出像你说的那样,我认为它也会很好,你能给我一个这样输出的例子吗??@EricMarcelino