jQuery.unique允许您获取数组的唯一元素,但文档称该函数主要供内部使用,并且仅对DOM元素进行操作.另一个SO响应表示该unique()函数对数字起作用,但是这个用例不一定是未来证据,因为它没有在文档中明确说明.
鉴于此,是否存在一个"标准"jQuery函数,用于仅访问数组中的唯一值 - 特别是整数等基元?(显然,我们可以使用函数构造一个循环each(),但我们是jQuery的新手,并且想知道是否有专用的jQuery函数.)
不幸的是,我没有JQuery或Underscore,只是纯粹的javascript(IE9兼容).
我想从LINQ功能中获得相当于SelectMany()的功能.
// SelectMany flattens it to just a list of phone numbers.
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);
Run Code Online (Sandbox Code Playgroud)
我可以做吗?
编辑:
感谢答案,我得到了这个工作:
var petOwners =
[
{
Name: "Higa, Sidney", Pets: ["Scruffy", "Sam"]
},
{
Name: "Ashkenazi, Ronen", Pets: ["Walker", "Sugar"]
},
{
Name: "Price, Vernette", Pets: ["Scratches", "Diesel"]
},
];
function property(key){return function(x){return x[key];}}
function flatten(a,b){return a.concat(b);}
var allPets = petOwners.map(property("Pets")).reduce(flatten,[]);
console.log(petOwners[0].Pets[0]);
console.log(allPets.length); // 6
var allPets2 = petOwners.map(function(p){ return p.Pets; }).reduce(function(a, b){ return a.concat(b); },[]); // all in …Run Code Online (Sandbox Code Playgroud) 例如,我有一个像这样的数组;
var arr = [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7, 8, 9, 10, 10]
Run Code Online (Sandbox Code Playgroud)
我的目的是从数组中丢弃重复元素并获得这样的最终数组;
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Run Code Online (Sandbox Code Playgroud)
如何在JavaScript中实现这一目标?
注意:数组未排序,值可以是任意顺序.
我正在开发一个支持AJAX的asp.net应用程序.我刚刚为Array.prototype添加了一些方法
Array.prototype.doSomething = function(){
...
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案对我有用,可以以"漂亮"的方式重用代码.
但是当我测试它与整个页面一起工作时,我遇到了问题.我们有一些自定义的ajax扩展器,并且它们开始表现为意外:一些控件在其内容或值周围显示"未定义".
可能是什么原因?我错过了修改标准对象原型的一些内容吗?
注意:我很确定在修改Array的原型时错误就开始了.它应该只与IE兼容.
我有一个简单的例子,将唯一值推送到数组中.它看起来像这样:
this.items = [];
add(item) {
if(this.items.indexOf(item) > -1) {
this.items.push(item);
console.log(this.items);
}
}
Run Code Online (Sandbox Code Playgroud)
看起来挺直截了当,对吧?不,看起来如此.它不会添加任何值.我确信这是我身上某种愚蠢的错误,但我似乎无法找到它.
我试图获取数组中的所有 id,然后使用 React TypeScript 删除重复项。
这是我的代码:
const uniqueMuscle = workoutexercices.map((exercice: any) => {
let exercicesId = exercice.id;
exercicesId = [...new Set(exercicesId)];
return exercicesId;
});
Run Code Online (Sandbox Code Playgroud)
VSCode[...new Set(exercicesId)];用红色下划线告诉我:
Type 'Set<unknown>' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher
所以我去了我的ts.config并更改了值,但仍然是相同的错误。
这是我的ts.config:
{
"compilerOptions": {
"target": "es2015",
I "downlevelIteration": true
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true, …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
var ar = [10,7,8,3,4,7,6];
function isin(n,a){
for (var i=0;i<a.length;i++){
if (a[i]== n) {
var b = true;
return b;
} else {
var c = false;
return c;
}
}
}
function unique(a){
var arr = [];
for (var i=0;i<a.length;i++){
if (!isin(a[i],arr)){
arr.push(a[i]);
}
}
return arr;
}
alert(unique(ar));
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我尝试从原始数组创建新的唯一数组(没有重复).但我仍然得到原始阵列!哪里是我的错?
我有一个数组:
[
1029,
1008,
1040,
1019,
1030,
1009,
1041,
1020,
1031,
1010,
1042,
1021,
1030,
1008,
1045,
1019,
1032,
1009,
1049,
1022,
1031,
1010,
1042,
1021,
]
Run Code Online (Sandbox Code Playgroud)
现在我想从中删除所有重复项.NodeJ中是否有任何方法可以直接执行此操作.
我需要过滤掉我的数组以仅包含唯一值.这是我的数组数据
["X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11"]
Run Code Online (Sandbox Code Playgroud)
预期的结果应该是
["X_row7", "X_row4", "X_row6", "X_row10", "X_row11", "X_row8", "X_row9"]
Run Code Online (Sandbox Code Playgroud)
我应该如何继续我的代码才能获得正确的结果.
newArray = [];
for(n in data){
if(!newArray.indexOf(n)){
newArray.push(n);
}
}
console.log(newArray);
Run Code Online (Sandbox Code Playgroud)
如果您需要任何其他信息,请告诉我,我会提供.谢谢
我收到了这个问题进行练习,措词使我感到困惑,因为我看到了可能想要的2个结果。
无论哪种方式,我都希望看到两种解决方案。
例如,如果我有一个数组:
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
Run Code Online (Sandbox Code Playgroud)
我认为这是想要最终结果的一种:
let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];
Run Code Online (Sandbox Code Playgroud)
要么:
let finalResult = [1, 9, 10];
Run Code Online (Sandbox Code Playgroud)
两者之间的区别在于,一个只是删除所有重复的数字,剩下其余部分,第二个只是想要任何非重复的数字。
无论哪种方式,我都想编写两个函数,每个函数执行一个。
这是别人给的,这是我的第二个解决方案。
let elems = {},
arr2 = arr.filter(function (e) {
if (elems[e] === undefined) {
elems[e] = true;
return true;
}
return false;
});
console.log(arr2);
Run Code Online (Sandbox Code Playgroud)
我不确定第一个功能(删除所有重复项)。