我有一系列数字,我需要确保它们是唯一的.我在互联网上找到了下面的代码片段,它的工作情况很好,直到数组中的数字为零.我发现这个其他脚本在SO上看起来几乎就像它,但它不会失败.
所以为了帮助我学习,有人可以帮我确定原型脚本出错的地方吗?
Array.prototype.getUnique = function() {
var o = {}, a = [], i, e;
for (i = 0; e = this[i]; i++) {o[e] = 1};
for (e in o) {a.push (e)};
return a;
}
Run Code Online (Sandbox Code Playgroud)
在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出现一次.
我经常搜索一个解决方案,但似乎没有任何工作,我自己尝试过的所有东西都变得荒谬复杂.任何帮助,将不胜感激!
谢谢 :)
这是我的数据:
[
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello-how-are-you',
id: "23"
},
{
url: 'www.example.com/i-like-cats',
id: "24"
},
{
url: 'www.example.com/i-like-pie',
id: "25"
}
]
Run Code Online (Sandbox Code Playgroud)
使用Lodash,我怎么能删除具有重复id键的对象?有过滤器,地图和独特的东西,但不太确定.
我的真实数据集要大得多,并且有更多的密钥,但概念应该是相同的.
如何获取数组中的唯一值列表?我是否总是必须使用第二个数组,或者在JavaScript中是否有与java的hashmap类似的东西?
我将只使用JavaScript和jQuery.不能使用其他库.
假设一个对象数组如下:
const listOfTags = [
{id: 1, label: "Hello", color: "red", sorting: 0},
{id: 2, label: "World", color: "green", sorting: 1},
{id: 3, label: "Hello", color: "blue", sorting: 4},
{id: 4, label: "Sunshine", color: "yellow", sorting: 5},
{id: 5, label: "Hello", color: "red", sorting: 6},
]
Run Code Online (Sandbox Code Playgroud)
如果标签和颜色相同,则重复输入.在这种情况下,id = 1且id = 5的对象是重复的.
如何过滤此数组并删除重复项?
我知道解决方案,您可以使用以下内容过滤一个键:
const unique = [... new Set(listOfTags.map(tag => tag.label)]
Run Code Online (Sandbox Code Playgroud)
但是多个键呢?
根据评论中的要求,这里是期望的结果:
[
{id: 1, label: "Hello", color: "red", sorting: 0},
{id: 2, label: "World", color: "green", sorting: 1}, …Run Code Online (Sandbox Code Playgroud) 基本上,我想实现以下内容:
var categories = [];
var products = // some array of product objects
products.map(function(value) {
if(categories.indexOf(value.Category === -1)) categories.push(value.Category);
});
Run Code Online (Sandbox Code Playgroud)
因此,categories数组包含唯一的产品类别列表.
我觉得应该有一个更好的方法去做,但没有想到任何事情.
如果没有,那么可能首先没有必要使用map().我可以这么简单
var categories = [];
var products = // some array of product objects
for (var i = 0; i < products.length; i++) {
if(categories.indexOf(products[i].Category === -1)) categories.push(products[i].Category);
}
Run Code Online (Sandbox Code Playgroud)
更新那些坚持认为它是"如何制作阵列唯一"问题的复制品.我看到了这个帖子,对于我的情况,我认为它不适用.我没有一系列值,我需要使其独特.我有一个对象数组,我需要构建一个唯一值数组.差异可能很微妙 - 但是要了解该主题的用例,我将构建一个非唯一的数组,然后使其唯一.似乎比我原来的解决方案更糟糕
我有一个带有obejcts电子邮件和Id的数组,所以我想要删除具有相似ID的重复元素.
例:
var newarray=[
{
Email:"test1@gmail.com",
ID:"A"
},
{
Email:"test2@gmail.com",
ID:"B"
},
{
Email:"test3@gmail.com",
ID:"A"
},
{
Email:"test4@gmail.com",
ID:"C"
},
{
Email:"test4@gmail.com",
ID:"C"
}
];
Run Code Online (Sandbox Code Playgroud)
现在我需要删除ID很常见的重复元素.我期待最终的数组是
var FinalArray=[
{
Email:"test1@gmail.com",
ID:"A"
},
{
Email:"test2@gmail.com",
ID:"B"
},
{
Email:"test5@gmail.com",
ID:"C"
}
];
Run Code Online (Sandbox Code Playgroud) 我有一个像下面的对象数组:
var array =
[
{"name":"abc","age":20}
{"name":"abc","age":20}
{"name":"abc","age":20}
{"name":"xyz","age":21}
{"name":"xyz","age":21}
]
Run Code Online (Sandbox Code Playgroud)
我想计算不同值的出现次数,例如:
[3,2]
Run Code Online (Sandbox Code Playgroud)
假设abc有3次出现并且xyz有2次出现.
我正在这样做reactjs.我能够获得不同的值,比如[abc,xyz]使用这个答案.
ES6语法是首选.
在这个片段中我被困在了_.uniqBy(array,iteratee),这个
iteratee 可以是函数或字符串同时var sourceArray = [ { id: 1, name: 'bob' },
{ id: 1, name: 'bill' },
{ id: 1, name: 'bill' } ,
{id: 2,name: 'silly'},
{id: 2,name: 'billy'}]
function uniqBy (inputArray, callback) {
return inputArray.filter(callback)
}
var inputFunc = function (item) {
return item.name
}
// var destArray = _.uniqBy(sourceArray,'name')
var destArray = uniqBy(sourceArray, inputFunc)
console.log('destArray', destArray)Run Code Online (Sandbox Code Playgroud)
任何领导都将非常感激.
我有一个对象数组,我只想根据它们的对象 ID 返回唯一的对象。
我试图在现有数组中循环,data然后查找元素是否已经添加到新创建的数组中arr,该数组应该只包含唯一值,但它对我不起作用,我相信我在这里或那里遗漏了一些东西.
这是当前数组:
[
{
"objectId": "WMtwbyhFI6",
"cuisineNameEn": "Cafe",
"ordersNo": 20,
"hidden": false
},
{
"objectId": "QJSNTMpq5F",
"ordersNo": 24,
"cuisineNameEn": "Italian",
"hidden": false
},
{
"objectId": "iLXKswFRGa",
"ordersNo": 5,
"cuisineNameEn": "Japanese",
"hidden": true
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "QJSNTMpq5F",
"ordersNo": 24,
"cuisineNameEn": "Italian",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food",
"hidden": false
},
{
"objectId": "Db0MeihpJE",
"ordersNo": 6,
"cuisineNameEn": "Fast Food", …Run Code Online (Sandbox Code Playgroud) javascript ×10
arrays ×7
lodash ×2
unique ×2
count ×1
dictionary ×1
duplicates ×1
ecmascript-6 ×1
element ×1
filter ×1
jquery ×1
reactjs ×1
reduce ×1