Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Object_Iteration - Fatal编程技术网

Javascript 从具有相似值的对象数组中获取所有对象

Javascript 从具有相似值的对象数组中获取所有对象,javascript,arrays,object,iteration,Javascript,Arrays,Object,Iteration,假设我在一个数组中有5个这样的对象: var myObjects = [{a: 1, b: 2}, {a: 3, b: 4}, {a: 1, b: 6}, {a: 3, b: 8}, {a: 1, b: 9}]; 如何迭代此myObjects并获得具有类似值的对象a=1。例如,{a:1,b:2},{a:1,b:6},{a:1,b:9}因此?使用: MDN为不支持此方法的旧浏览器提供了一种新的方法 如果要根据属性a对对象进行分组,则可以使用以下方法: var result = {}; for

假设我在一个数组中有5个这样的对象:

var myObjects = [{a: 1, b: 2}, {a: 3, b: 4}, {a: 1, b: 6}, {a: 3, b: 8}, {a: 1, b: 9}];
如何迭代此myObjects并获得具有类似值的对象
a=1
。例如,
{a:1,b:2},{a:1,b:6},{a:1,b:9}
因此?

使用:

MDN为不支持此方法的旧浏览器提供了一种新的方法

如果要根据属性
a
对对象进行分组,则可以使用以下方法:

var result = {};

for (var i = 0, len = myObjects.length; i < len; i++) {
    var obj = myObjects[i];

    if (result[obj.a] === undefined) {
        result[obj.a] = [];
    }

    result[obj.a].push(obj);
}

console.log(result);
var result={};
for(var i=0,len=myObjects.length;i
使用:

MDN为不支持此方法的旧浏览器提供了一种新的方法

如果要根据属性
a
对对象进行分组,则可以使用以下方法:

var result = {};

for (var i = 0, len = myObjects.length; i < len; i++) {
    var obj = myObjects[i];

    if (result[obj.a] === undefined) {
        result[obj.a] = [];
    }

    result[obj.a].push(obj);
}

console.log(result);
var result={};
for(var i=0,len=myObjects.length;i
扩展@VisioN的答案:您可以使用一个工厂函数,该函数本身返回一个函数以进行筛选:

function filterAByValue(value) {
  return function(item) {
    return item.a === value;
  };
}

var result = myObjects.filter(filterAByValue(1));
或者甚至使属性变量:

function filterPropertyByValue(property, value) {
  return function(item) {
    return item[property] === value;
  };
}

var result = myObjects.filter(filterPropertyByValue("a", 1));

扩展@VisioN的答案:您可以使用一个工厂函数,该函数本身返回一个函数以进行筛选:

function filterAByValue(value) {
  return function(item) {
    return item.a === value;
  };
}

var result = myObjects.filter(filterAByValue(1));
或者甚至使属性变量:

function filterPropertyByValue(property, value) {
  return function(item) {
    return item[property] === value;
  };
}

var result = myObjects.filter(filterPropertyByValue("a", 1));
试试这个

var index[];
for(i=0;i<obj.lenght;i++)
{
    if(obj[i].a==1)
    {
       index.push(i);
       //you even can push obj[i] to some other array and use it
    }
}
var指数[];
对于(i=0;i试试这个

var index[];
for(i=0;i<obj.lenght;i++)
{
    if(obj[i].a==1)
    {
       index.push(i);
       //you even can push obj[i] to some other array and use it
    }
}
var指数[];

对于(i=0;我希望得到答复,但我已经尝试过了,但在我的情况下,我不知道'a'的值,我刚刚给出了答案clearity@BijayRai然后解决方案会更高级一些。请查看更新后的答案。感谢您的回复,但我已经尝试过了,但在我的情况下,我不知道“a”的值,我刚刚给出了它clearity@BijayRai然后解决方案会更高级一些。请查看更新后的答案。如果您不知道要搜索的
a
的值,请提供一个您期望的结果示例,我希望获得{a:1,b:2},{a:1,b:6},{a:1,b:9}作为对象数组的结果,因为在这些对象中,a等于1,对于任何其他值也是如此,但您说您不知道
a
…那么过滤值=1的规则是什么?代码如何知道删除a=3?它们不会被魔法删除,您需要定义规则。为什么结果不应该是
{a:3,b:4},{a:3,b:8}
例如?如果您不知道要搜索的
a
的值,请提供一个您期望的结果示例,我希望得到{a:1,b:2},{a:1,b:6},{a:1,b:9}作为对象数组的结果,因为在这些对象中,a等于1,对于任何其他值也是如此,但您说您不知道
a
…那么过滤值=1的规则是什么?代码如何知道删除a=3?它们不会被魔法删除,您需要定义规则。为什么结果不应该是
{a:3,b:4},{a:3,b:8}
例如?