Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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_Underscore.js - Fatal编程技术网

Javascript 在新数组中返回数组中每个唯一的值实例

Javascript 在新数组中返回数组中每个唯一的值实例,javascript,underscore.js,Javascript,Underscore.js,我正在尝试编写一个函数,它将接受以下数组 var data = [ { name: 'Josh', description: 'some data about this guy', sortOrder: 'Gold' }, { name: 'Bill', descr

我正在尝试编写一个函数,它将接受以下数组

var data = [
            {
                name: 'Josh',
                description: 'some data about this guy',
                sortOrder: 'Gold'
            }, 
            {
                name: 'Bill',
                description: 'some data about this guy',
                sortOrder: 'Platinum'
            },
            {
                name: 'Gary',
                description: 'some data about this guy',
                sortOrder: 'Platinum'
            },
            {
                name: 'Phillip',
                description: 'some data about this guy',
                sortOrder: 'Platinum'
            },
            {
                name: 'Bob',
                description: 'some data about this guy',
                sortOrder: 'Gold'
            },
            {
                name: 'Barry',
                description: 'some data about this guy',
                sortOrder: 'Gold'
            },
            {
                name: 'Joe',
                description: 'some data about this guy',
                sortOrder: 'Gold'
            },
            {
                name: 'Ed',
                description: 'some data about this guy',
                sortOrder: 'Silver'
            },
            {
                name: 'Baxter',
                description: 'some data about this guy',
                sortOrder: 'Platinum'
            },
            {
                name: 'Patrick',
                description: 'some data about this guy',
                sortOrder: 'Silver'
            },
            {
                name: 'Stepehn',
                description: 'some data about this guy',
                sortOrder: 'Silver'
            }
];
给我一个像这样的数组:

[Platinum, Gold, Silver] <-- The order doesn't matter
[白金、黄金、白银]这应该很有效(干净js):

var订单=[];
对于(变量i=0;i
这应该很有效(干净的js):

var订单=[];
对于(变量i=0;i
试试这个

var result=\u0.chain(数据)
.pluck(‘sortOrder’)
.uniq()
.value();
控制台日志(结果)试试这个

var result=\u0.chain(数据)
.pluck(‘sortOrder’)
.uniq()
.value();
控制台日志(结果)

console.log(_.chain(data).pluck('sortOrder').uniq().value());
加下划线:

console.log(_.chain(data).pluck('sortOrder').uniq().value());
由于这些值是字符串,我们可以通过JavaScript中的对象进行访问

var a=(函数(arr){
变量i,o={};
对于(i=0;i
由于值是字符串,我们可以通过JavaScript中的对象进行访问

var a=(函数(arr){
变量i,o={};
对于(i=0;i
不使用任何其他库:

var results = [];
for(var i = 0; i < data.length; ++i){
    if(results.indexOf(data[i].sortOrder) < 0){
      results.push(data[i].sortOrder);
    }
}
var结果=[];
对于(变量i=0;i

results
变量将包含您想要的列表。

不使用任何其他库:

var results = [];
for(var i = 0; i < data.length; ++i){
    if(results.indexOf(data[i].sortOrder) < 0){
      results.push(data[i].sortOrder);
    }
}
var结果=[];
对于(变量i=0;i

results
变量将包含您想要的列表。

许多简单的JS产品,它们总是可以与库进行比较。考虑ES5的减少:

var result = data.reduce(function(acc, val) {
  if (acc.indexOf(val.sortOrder) == -1) acc.push(val.sortOrder);
  return acc;
},[]);

许多简单的JS产品,与库相比总是很好的。考虑ES5的减少:

var result = data.reduce(function(acc, val) {
  if (acc.indexOf(val.sortOrder) == -1) acc.push(val.sortOrder);
  return acc;
},[]);

? -> <代码>..uniq(..pull(数据,'sortOrder'))
?->
\uu.uniq(u.pull(data,'sortOrder'))
您不需要对
使用特殊情况。length==0
,indexOf将给出
-1
仍然为真。不知道我写第一部分的时候在想什么。编辑以删除该值。对于
,不需要特殊的大小写。长度===0
,indexOf将给出
-1
仍然为true。不知道我写第一部分的时候在想什么。编辑以删除该值。是什么阻止了相同值的多次添加?重复
if('foo'&&&!orders['foo']){orders.push('foo');}
不断添加到
orders
@PaulS。不应该。你能给我举个例子吗?@YavorIvanov-
orders[data[i].sortOrder]
正在检查名为Gold、Platinum等属性的订单。但它们是数组中的值,而不是属性名称。这只是创建一个包含所有排序器值(包括重复项)的数组。也许您错过了“返回一个数组,其中包含每个唯一排序器的一个实例”。@PaulS。天哪,我有点惭愧。你说得对,谢谢:D我真的很困是什么阻止了相同值的多次相加?重复
if('foo'&&&!orders['foo']){orders.push('foo');}
不断添加到
orders
@PaulS。不应该。你能给我举个例子吗?@YavorIvanov-
orders[data[i].sortOrder]
正在检查名为Gold、Platinum等属性的订单。但它们是数组中的值,而不是属性名称。这只是创建一个包含所有排序器值(包括重复项)的数组。也许您错过了“返回一个数组,其中包含每个唯一排序器的一个实例”。@PaulS。天哪,我有点惭愧。你说得对,谢谢。我真的很困