Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建多维数组,然后为每个多维数组推送另一个数组_Javascript_Arrays_Loops_Object_Multidimensional Array - Fatal编程技术网

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