在Javascript中,我试图获取一个初始数值值数组并计算其中的元素.理想情况下,结果将是两个新数组,第一个指定每个唯一元素,第二个包含每个元素出现的次数.但是,我愿意接受有关输出格式的建议.
例如,如果初始数组是:
5, 5, 5, 2, 2, 2, 2, 2, 9, 4
然后将创建两个新阵列.第一个将包含每个唯一元素的名称:
5, 2, 9, 4
第二个将包含元素在初始数组中出现的次数:
3, 5, 1, 1
因为数字5在初始数组中出现三次,所以数字2出现五次,9和4出现一次.
我经常搜索一个解决方案,但似乎没有任何工作,我自己尝试过的所有东西都变得荒谬复杂.任何帮助,将不胜感激!
谢谢 :)
让我们看一个例子.
var arr1 = new Array({name: "lang", value: "English"}, {name: "age", value: "18"});
var arr2 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});
我需要合并这2个对象数组并创建以下数组.
arr3 = new Array({name: "lang", value: "German"}, {name: "age", value: "18"}, {name : "childs", value: '5'});
有没有jScript或jQuery函数来做到这一点?
$ .extend不适合我.它回来了
arr4 = new Array({name : "childs", value: '5'}, {name: "lang", value: "German"});
先谢谢,亚历山大.
我总是这样成功地对我的数组进行排序(当我不想要标准的词典排序时):
var arr = […] // some numbers or so
arr.sort(function(a, b) {
    return a > b;
});
现在,有人告诉我这是错的,我需要return a-b改为.这是真的,如果是的话为什么?我测试了我的比较功能,它有效!另外,为什么我的解决方案在出错时会如此常见?
我有一个对象数组:
[{"value":"14","label":"7"},{"value":"14","label":"7"},{"value":"18","label":"7"}]
如何删除此项{"value":"14","label":"7"}导致新数组:
 [{"value":"14","label":"7"},{"value":"18","label":"7"}]
?
我有一个对象数组,我想根据特定的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
    }
  }
];
会成为:
var trimmedArray = [
  {"color":"red", 
    "size": "small",
    "custom": {
      "inStock": true,
      "price": 10
    }
  },
  {"color":"green", 
    "size": "small",
    "custom": { …我有一个这样的对象数组 -
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}
];
我想删除具有相同type_id和full_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},
];
我已经搜索并找到了一些解决方案,但其中一些是用于删除重复键或基于仅一个键的重复值删除重复项.一些需要的外部库.还有一些我无法理解的解决方案.有没有简单的方法在纯JavaScript中执行此操作?
编辑以便更好地理解 - 我已阅读此问题.对该问题的接受答案是仅查找一个密钥的重复.在我的情况下,我必须找到多个键的重复.
我正在使用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"}
位置基本上是用于计算距离的纬度和经度数组,在id 0,1和2中它的坐标相同,3,4和5也是相同的,...
这就是我想要的:
0: {location: Array(2), distance: "48.84", url: "assets/imgs/fix.png"}
1: {location: Array(2), …我看到这个问题经常被问到常规的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;
}
两者都来自数组中的唯一值
但是没有工作,看起来像是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)); …我想获得具有唯一对象的数组.
说我有对象数组
[{"a":"b"},{"c":"d"},{"a":"b"}] 
我想要数组的唯一值ie
[{"a":"b"},{"c":"d"}]
有没有最简单的方法来做到这一点.
我有一个这样的数组:
[{
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 6.4
    }
}, {
    "number": "3",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}, {
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}]
我正在尝试使用以下条件创建一个新数组:
array.rating.average每个数字 ( array.number) 的最高评分( )输出应该是:
[{
    "number": "4",
    "fileName": "fileXX",
    "rating": {
        "average": 6.4
    }
}, {
    "number": "3",
    "fileName": "fileXX",
    "rating": {
        "average": 5.4
    }
}
}]
我刚刚设法按最高评分排序:
array.sort(function(a , b) {
    return a.rating.average - b.rating.average;
});
array.reverse();
但是,现在,我只想要每个副本一个对象array.number …