相关疑难解决方法(0)

计算数组元素的出现次数/频率

在Javascript中,我试图获取一个初始数值值数组并计算其中的元素.理想情况下,结果将是两个新数组,第一个指定每个唯一元素,第二个包含每个元素出现的次数.但是,我愿意接受有关输出格式的建议.

例如,如果初始数组是:

5, 5, 5, 2, 2, 2, 2, 2, 9, 4
Run Code Online (Sandbox Code Playgroud)

然后将创建两个新阵列.第一个将包含每个唯一元素的名称:

5, 2, 9, 4
Run Code Online (Sandbox Code Playgroud)

第二个将包含元素在初始数组中出现的次数:

3, 5, 1, 1
Run Code Online (Sandbox Code Playgroud)

因为数字5在初始数组中出现三次,所以数字2出现五次,9和4出现一次.

我经常搜索一个解决方案,但似乎没有任何工作,我自己尝试过的所有东西都变得荒谬复杂.任何帮助,将不胜感激!

谢谢 :)

javascript arrays element count

195
推荐指数
20
解决办法
31万
查看次数

合并2个对象数组

让我们看一个例子.

var arr1 = new Array({name: "lang", value: "English"}, {name: "age", value: "18"});
var arr2 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});
Run Code Online (Sandbox Code Playgroud)

我需要合并这2个对象数组并创建以下数组.

arr3 = new Array({name: "lang", value: "German"}, {name: "age", value: "18"}, {name : "childs", value: '5'});
Run Code Online (Sandbox Code Playgroud)

有没有jScript或jQuery函数来做到这一点?

$ .extend不适合我.它回来了

arr4 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});
Run Code Online (Sandbox Code Playgroud)

先谢谢,亚历山大.

javascript arrays jquery

89
推荐指数
15
解决办法
17万
查看次数

在JavaScript中排序:不应该返回一个布尔值足够的比较函数?

我总是这样成功地对我的数组进行排序(当我不想要标准的词典排序时):

var arr = […] // some numbers or so
arr.sort(function(a, b) {
    return a > b;
});
Run Code Online (Sandbox Code Playgroud)

现在,有人告诉我这是错的,我需要return a-b改为.这是真的,如果是的话为什么?我测试了我的比较功能,它有效!另外,为什么我的解决方案出错时会如此常见

javascript sorting comparison

41
推荐指数
2
解决办法
7724
查看次数

从对象数组中删除对象

我有一个对象数组:

[{"value":"14","label":"7"},{"value":"14","label":"7"},{"value":"18","label":"7"}]
Run Code Online (Sandbox Code Playgroud)

如何删除此项{"value":"14","label":"7"}导致新数组:

 [{"value":"14","label":"7"},{"value":"18","label":"7"}]
Run Code Online (Sandbox Code Playgroud)

javascript arrays

34
推荐指数
3
解决办法
4万
查看次数

JavaScript:删除共享相同属性值的对象的重复项

我有一个对象数组,我想根据特定的key:value对减少.我想创建一个数组,每个特定key:value对只包含一个对象.将重复项的哪个对象复制到新数组并不一定重要.

例如,我想根据price属性修剪arrayWithDuplicates,创建一个只包含每个值之一的新数组:

var arrayWithDuplicates = [
  {"color":"red", 
    "size": "small",
    "custom": {
      "inStock": true,
      "price": 10
    }
  },
  {"color":"green", 
    "size": "small",
    "custom": {
      "inStock": true,
      "price": 30
    }
  },
  {"color":"blue", 
    "size": "medium",
    "custom": {
      "inStock": true,
      "price": 30
    }
  },
  {"color":"red", 
    "size": "large",
    "custom": {
      "inStock": true,
      "price": 20
    }
  }
];
Run Code Online (Sandbox Code Playgroud)

会成为:

var trimmedArray = [
  {"color":"red", 
    "size": "small",
    "custom": {
      "inStock": true,
      "price": 10
    }
  },
  {"color":"green", 
    "size": "small",
    "custom": { …
Run Code Online (Sandbox Code Playgroud)

javascript arrays object key-value angularjs

26
推荐指数
4
解决办法
4万
查看次数

根据多个键的重复值从对象数组中删除元素

我有一个这样的对象数组 -

var arr = [
    { type_id: "3", full_empty:"true", quantity:1},
    { type_id: "3", full_empty:"true", quantity:1},
    { type_id: "9", full_empty:"true", quantity:4},
    { type_id: "9", full_empty:"false", quantity:4},
    { type_id: "9", full_empty:"true", quantity:4},
    { type_id: "9", full_empty:"true", quantity:4},
    { type_id: "9", full_empty:"true", quantity:4}
];
Run Code Online (Sandbox Code Playgroud)

我想删除具有相同type_idfull_empty值的重复项.结果应该是这样的 -

var arr = [
    { type_id: "3", full_empty:"true", quantity:1},
    { type_id: "9", full_empty:"true", quantity:4},
    { type_id: "9", full_empty:"false", quantity:4},
];
Run Code Online (Sandbox Code Playgroud)

我已经搜索并找到了一些解决方案,但其中一些是用于删除重复键或基于仅一个键的重复值删除重复项.一些需要的外部库.还有一些我无法理解的解决方案.有没有简单的方法在纯JavaScript中执行此操作?

编辑以便更好地理解 - 我已阅读此问题.对该问题的接受答案是仅查找一个密钥的重复.在我的情况下,我必须找到多个键的重复.

javascript filter

10
推荐指数
2
解决办法
1655
查看次数

从GeoFire对象数组中删除重复项

我正在使用Angular 6上的Geofire和Firebase存储位置,不幸的是它存储了大量重复项,这是一个示例(控制台记录我的变量currentHits):

0: {location: Array(2), distance: "48.84", url: "assets/imgs/fix.png"}
1: {location: Array(2), distance: "48.84", url: "assets/imgs/fix.png"}
2: {location: Array(2), distance: "48.84", url: "assets/imgs/fix.png"}
3: {location: Array(2), distance: "48.85", url: "assets/imgs/free.png"}
4: {location: Array(2), distance: "48.85", url: "assets/imgs/free.png"}
5: {location: Array(2), distance: "48.85", url: "assets/imgs/free.png"}
6: {location: Array(2), distance: "48.87", url: "assets/imgs/low.png"}
7: {location: Array(2), distance: "48.87", url: "assets/imgs/low.png"}
8: {location: Array(2), distance: "48.87", url: "assets/imgs/low.png"}
Run Code Online (Sandbox Code Playgroud)

位置基本上是用于计算距离的纬度和经度数组,在id 0,1和2中它的坐标相同,3,4和5也是相同的,...

这就是我想要的:

0: {location: Array(2), distance: "48.84", url: "assets/imgs/fix.png"}
1: {location: Array(2), …
Run Code Online (Sandbox Code Playgroud)

javascript firebase geofire angular

10
推荐指数
1
解决办法
554
查看次数

独特的日期数组Javascript

我看到这个问题经常被问到常规的javascript数组,但是如果有一个日期数组,那么答案似乎都无法解决.

我可以通过试验错误地解决这个问题,但如果我问的话,我确实看到了其他人的一些好处.

基本上如果你有一个javascript数组的日期可能有重复,需要过滤到一个没有重复的数组,最好的方法是什么?

我尝试过ES6解决方案,Array.from(new Set(arr))但它只返回相同的数组.

我也试过了

Array.prototype.unique = function() {
    var a = [];
    for (var i=0, l=this.length; i<l; i++)
        if (a.indexOf(this[i]) === -1)
            a.push(this[i]);
    return a;
}
Run Code Online (Sandbox Code Playgroud)

两者都来自数组中的唯一值

但是没有工作,看起来像是indexOf在日期对象上不起作用.

这是我的数组生成atm的方式

//this is an array generated from ajax data, 
//its a year over year comparison with a separate year, 
//so to create a reliable date objects I force it to use the same year.
data.map(d => {
   dp = new Date(Date.parse(d.date + '-' + d.year)); …
Run Code Online (Sandbox Code Playgroud)

javascript arrays date

8
推荐指数
3
解决办法
4492
查看次数

如何在javascripts中获取唯一的对象数组

我想获得具有唯一对象的数组.

说我有对象数组

[{"a":"b"},{"c":"d"},{"a":"b"}] 
Run Code Online (Sandbox Code Playgroud)

我想要数组的唯一值ie

[{"a":"b"},{"c":"d"}]
Run Code Online (Sandbox Code Playgroud)

有没有最简单的方法来做到这一点.

javascript arrays jquery

7
推荐指数
2
解决办法
1220
查看次数

过滤和排序 JavaScript 数组

我有一个这样的数组:

[{
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 6.4
    }
}, {
    "number": "3",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}, {
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下条件创建一个新数组:

  1. 获得array.rating.average每个数字 ( array.number) 的最高评分( )

输出应该是:

[{
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 6.4
    }
}, {
    "number": "3",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}
}]
Run Code Online (Sandbox Code Playgroud)

我刚刚设法按最高评分排序:

array.sort(function(a , b) {
    return a.rating.average - b.rating.average;
});
array.reverse();
Run Code Online (Sandbox Code Playgroud)

但是,现在,我只想要每个副本一个对象array.number …

javascript arrays sorting

7
推荐指数
1
解决办法
4万
查看次数