Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Sorting - Fatal编程技术网

Javascript 在数组中插入、删除和添加对象

Javascript 在数组中插入、删除和添加对象,javascript,arrays,sorting,Javascript,Arrays,Sorting,我还没有开始编写代码,因为我想收集我的想法,找出解决这个问题的最佳方法 我有一个排序数组,其中包含具有类别和名称的对象 数组按类别排序(类别为A、B和C)。A总是放在B之前,B总是放在C之前 确定类别后,还将按名称进行排序。(A类苹果将先于A类香蕉) 这是我想到的方法 有一个inventory类,其中有4个数组。阵列将按类别(阵列A、阵列B、阵列C和组合阵列)进行拆分。这样,当选中类别时,它将转到正确的数组,并根据名称将内容放置到正确的位置。它不检查一个巨大的数组,而是检查一个较小的数组。当

我还没有开始编写代码,因为我想收集我的想法,找出解决这个问题的最佳方法

我有一个排序数组,其中包含具有类别和名称的对象

  • 数组按类别排序(类别为A、B和C)。A总是放在B之前,B总是放在C之前
  • 确定类别后,还将按名称进行排序。(A类苹果将先于A类香蕉)
这是我想到的方法

有一个inventory类,其中有4个数组。阵列将按类别(阵列A、阵列B、阵列C和组合阵列)进行拆分。这样,当选中类别时,它将转到正确的数组,并根据名称将内容放置到正确的位置。它不检查一个巨大的数组,而是检查一个较小的数组。当添加对象时,它会将数组a、b和c附加到组合数组中


这将用js编码。我写这篇文章是因为我想知道我是否在正确的轨道上,或者是否有更好的逻辑来按类别和名称对数组进行排序。

您可以通过or运算符链接排序。通过js短路,这将非常有效,例如:

yourArray.sort((a,b)=>
      a.category.localeCompare(b.category)
   || a.name.localeCompare(b.name)
);

对于更多具有相同比较机制的组,如
localeCompare
,您可以使用带有键的数组。这很容易维护

var keys = ['category', 'name'];

array.sort(function (a, b) {
    var v;
    return keys.some(function (k) {
        return v = a[k].localeCompare(b[k]);
    }) && v;
});

您必须至少提供一些自己的代码。在询问某件事是否是更好的方法之前,先尝试一下,尤其是如果你能让它发挥作用,而且这不是一个巨大的努力,那么你就在正确的轨道上了。