什么';这两个javascript对象之间的区别是什么

什么';这两个javascript对象之间的区别是什么,javascript,Javascript,我正在尝试从以下对象获取值。for循环在其中一个对象中起作用,但在另一个javascript对象中不起作用。我想知道有什么区别,我怎样才能让它在另一个对象中工作 目标1: var objects = [ { "foo" : "bar", "bar" : "sit" }, { "foo" : "lorem", "bar" : "ipsum" } ]; 目标2: { "4dd5a49e366": { "name" : "bar", "bar" : "

我正在尝试从以下对象获取值。for循环在其中一个对象中起作用,但在另一个javascript对象中不起作用。我想知道有什么区别,我怎样才能让它在另一个对象中工作

目标1:

var objects = [
  {
    "foo" : "bar",
    "bar" : "sit"
  },
  {
    "foo" : "lorem",
    "bar" : "ipsum"
  }
];
目标2:

{
"4dd5a49e366": {
"name" : "bar",
"bar" : "sit",
"date": "2016-08-03T04:48:04.283Z"
},
"519c5056af2": {
"name" : "lorem",
"bar" : "ipsum",
"date": "2016-09-03T04:48:04.283Z"
}
}
我想搜索name属性与某个搜索词匹配的项目。并归还物品

下面是我使用的循环搜索

function searchFor(toSearch) {
      var results = [];
      toSearch = trimString(toSearch); // trim it
      for(var i=0; i<objects.length; i++) {
        for(var i in objects[i]) {
          if(objects[i][key].indexOf(toSearch)!=-1) {
            if(!itemExists(results, objects[i])) results.push(objects[i]);
          }
        }
      }
      return results;
    }
   console.log(searchFor('o'));
函数搜索(toSearch){
var结果=[];
toSearch=trimString(toSearch);//修剪它

对于(var i=0;i我建议您阅读JavaScript对象文字和数组。第一个示例是对象数组。第二个示例只是对象。两种完全不同的数据结构。

我建议您阅读JavaScript对象文字和数组。第一个示例是对象数组。第二个示例只是对象。两种完全不同的数据结构。

第一个变量是一个对象数组。因为它是一个数组,所以可以在上面使用所有数组方法

第二个是具有键
4dd5a49e366
519c5056af2
的对象,这些键又是对象,几乎没有属性

不能在此第二个对象上使用数组方法

我如何让它在另一个对象中工作

希望这段代码有用

var myObject = {
  "4dd5a49e366": {
    "name": "bar",
    "bar": "sit",
    "date": "2016-08-03T04:48:04.283Z"
  },
  "519c5056af2": {
    "name": "lorem",
    "bar": "ipsum",
    "date": "2016-09-03T04:48:04.283Z"
  }
}
// a function to accept the name value
function findByName(name) {
  var thisObject = "";
  for (var keys in myObject) { // looping over objects
    var getThisObject = myObject[keys];
    if (getThisObject.name === name) { // Checking if name matches
      thisObject = myObject[keys]; // assigning the object to a variable
    }
  }
  return thisObject // return that variable
}
var getMyObject = findByName('bar');
console.log(getMyObject)

编辑

如果我只输入findByName('b');它应该返回 全名

您需要使用
indexOf
查找此名称值是否包含特定字符

使用数组存储名称值包含此特定字符的所有相关对象。从函数返回该数组

function findByName(name) {
  var thisObject = [];
  for (var keys in myObject) {
    var getThisObject = myObject[keys];
    if (getThisObject.name.indexOf(name)!==-1) {
      thisObject.push(myObject[keys]);
    }
  }
  return thisObject
}
var getMyObject = findByName('b');

第一个变量是一个对象数组。因为它是一个数组,所以可以对其使用所有数组方法

第二个是具有键
4dd5a49e366
519c5056af2
的对象,这些键又是对象,几乎没有属性

不能在此第二个对象上使用数组方法

我如何让它在另一个对象中工作

希望这段代码有用

var myObject = {
  "4dd5a49e366": {
    "name": "bar",
    "bar": "sit",
    "date": "2016-08-03T04:48:04.283Z"
  },
  "519c5056af2": {
    "name": "lorem",
    "bar": "ipsum",
    "date": "2016-09-03T04:48:04.283Z"
  }
}
// a function to accept the name value
function findByName(name) {
  var thisObject = "";
  for (var keys in myObject) { // looping over objects
    var getThisObject = myObject[keys];
    if (getThisObject.name === name) { // Checking if name matches
      thisObject = myObject[keys]; // assigning the object to a variable
    }
  }
  return thisObject // return that variable
}
var getMyObject = findByName('bar');
console.log(getMyObject)

编辑

如果我只输入findByName('b');它应该返回 全名

您需要使用
indexOf
查找此名称值是否包含特定字符

使用数组存储名称值包含此特定字符的所有相关对象。从函数返回该数组

function findByName(name) {
  var thisObject = [];
  for (var keys in myObject) {
    var getThisObject = myObject[keys];
    if (getThisObject.name.indexOf(name)!==-1) {
      thisObject.push(myObject[keys]);
    }
  }
  return thisObject
}
var getMyObject = findByName('b');

这是因为1是数组,2是对象。请注意方括号和花括号之间的区别。这可能会对您有所帮助,因为1是数组,2是对象。请注意方括号和花括号之间的区别。这可能会对您有所帮助。顺便说一下,我正在搜索名称中匹配的一些字母例如,如果我只输入findByName('b');它应该返回全名为findByName('bar')的结果威尔。你在你的问题中没有提到。对不起。我的不好。如果我能让它发挥作用,我将非常感激。好的,那么当有多个名字中有
b
时会发生什么。它应该返回所有有b的项目。顺便说一句,我正在搜索一些名字中与搜索词匹配的字母。例如……如果我ter just findByName('b');它应该返回全名findByName('bar')将返回的结果。您在问题中没有提到它。对不起,我的错。如果我能让它起作用,我将非常感激。好的,那么当多个名称中包含
b
时会发生什么。它应该返回所有包含b的项目。