如何使用Javascript从对象中查找项?

如何使用Javascript从对象中查找项?,javascript,arrays,Javascript,Arrays,我有我的数据对象: var elements = { 'element' : { 'name' : 'test', 'price' : '55' }, 'element' : { 'name' : 'letev', 'price': '223' } }; 现在,我不知道如何通过名称来查找每个元素。

我有我的数据对象:

var elements = {
        'element' : {
            'name' : 'test',
                    'price' : '55'
        },
        'element' : {
            'name' : 'letev',
                    'price': '223'
        }
    };
现在,我不知道如何通过名称来查找每个元素。 我需要按名称查找元素测试,然后访问它的其他参数(价格,…)

尝试:

var elements = [
  {
    'name' : 'test',
    'price' : '55'
  },
  {
    'name' : 'letev',
    'price': '223'
  }
];

var search = 'letev';
for (var i = 0; i < elements.length; i++) {
  if (elements[i].name == search) {
    alert('found!');
    break;
  }
}

假设您的对象是数组而不是您使用的语法:

var elements = [
    {
        'name' : 'test',
        'price' : '55'
    },{
        'name' : 'letev',
        'price': '223'
    }
];
可以按如下方式导出元素:

searchName = 'test';
elements.filter(function(element){
    return element.name == searchName;
});
array result = filterByName(elements, 'test');
这将只返回名为
'test'
的元素

或者作为一种功能:

function filterByName(array, namr){
    array.filter(function(element){
        return element.name == name;
    });
}
这样称呼:

searchName = 'test';
elements.filter(function(element){
    return element.name == searchName;
});
array result = filterByName(elements, 'test');

如果您需要支持IE8或更低版本,可以使用for
数组.prototype.filter

如果
元素
对象是数组,即

var elements = [{
        'element' : {
            'name' : 'test',
                    'price' : '55'
        },
        'element' : {
            'name' : 'letev',
                    'price': '223'
        }
    }];

var price;
for (var i=0; i  <elements.length; i++) { 
    if (elements[i].name === 'test') {
        price = elements[i].price;
        break;
    }
}
var元素=[{
“元素”:{
“名称”:“测试”,
‘价格’:‘55’
},
“元素”:{
'name':'letev',
“价格”:“223”
}
}];
var价格;

对于(var i=0;i您必须将元素更改为数组:

var elements = [
    {
        'name' : 'test',
        'price' : '55'
    },
    {
        'name' : 'letev',
        'price': '223'
    }
];

function findElementByName(name, elementsForSearch) {
    if (name) {
        elementsForSearch.filter(function(elem){
            return elem.name === 'name';
        });
        return elementsForSearch[0];
    }
    return {};
}

alert(findElementByName('test', elements).name)
试试这个

var List= (JObject)JsonConvert.DeserializeObject(jsonstring);
    var result= List["element"].Children().Select(node => node["name"]== "Test").ToList();

这个对象是不可能的。键名必须是唯一的。使用
Array.filter
。它更易于维护。是的,谢谢,它是ES 5.1,但检查了它的支持(IE9+和现代)。我想我可以使用它:)使用
Array.filter
,而不是手动迭代结果。