在多维数组

时间:2016-02-03 13:18:46

标签: javascript arrays multidimensional-array

我有一系列项目:

items = [{name: "microphone", cost:1000, improvement:1},
     {name: "guitar", cost:5000, improvement: 10},
     {name: "keyboard", cost: 10000, improvement: 50},
     {name: "band member", cost: 20000, improvement: 100}
    ];

我想找一个项目的改进'提供它的名字。

我试过这个:

var upgrade = items.findOne({ name: nameInput });

但我收到错误:

Exception while invoking method 'buy' TypeError: Object [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] has no method 'findOne'

如果我无法使用findone,是否有另一种方法可以实现我的目标?

3 个答案:

答案 0 :(得分:0)

这样的函数可以让你搜索那个数组中的名字:

var findOne = function(arrayOfObjs, searchTerm) {
  var result;
  arrayOfObjs.forEach(function(item) {
    if(item.name == searchTerm) {
      result =  item.improvement;
    }
  });
  return result
}

findOne(items, "microphone");

答案 1 :(得分:0)

  

我想通过提供它的名字来找到一个项目的'改进'。

使用reduce方法

var name = "guitar";
var selectedItem = items.reduce(function(prev, current){

   if ( current.name === name ) {return current;}
   else {return prev;}

});
console.log( selectedItem.improvement );

答案 2 :(得分:0)

试试这个:

  items = [{name: "microphone", cost:1000, improvement:1},
         {name: "guitar", cost:5000, improvement: 10},
         {name: "keyboard", cost: 10000, improvement: 50},
         {name: "band member", cost: 20000, improvement: 100}
        ];

如果您的商品名称为:

itemname = "microphone";    
    items.forEach(function(obj) {
        if(obj.name == itemname){
         return obj.improvement;
        }
    });