检查 JS 对象中的值

发布于 2024-10-10 12:09:29 字数 862 浏览 1 评论 0原文

我有一个像这样的 JS 对象:

var ob{
  1 : {
        id:101,
        name:'john',
        email:'[email protected]'
      },
  2 : {
        id:102,
        name:'jim',
        email:'[email protected]'
      },
  3 : {
        id:103,
        name:'bob',
        email:'[email protected]'
      },
}

我想检查这个 JS 对象是否已经包含一条记录。如果没有,那么我想添加它。例如。

if(ob contains an id of 101){
//don't add john
}else{
//add john
}

明白我的意思了吗?很简单的问题。我只是想知道最好的方法。

谢谢你们!

W.

I have a JS Object like so:

var ob{
  1 : {
        id:101,
        name:'john',
        email:'[email protected]'
      },
  2 : {
        id:102,
        name:'jim',
        email:'[email protected]'
      },
  3 : {
        id:103,
        name:'bob',
        email:'[email protected]'
      },
}

I want to check if this JS object already contains a record. If it doesn't then I want to add it. For example.

if(ob contains an id of 101){
//don't add john
}else{
//add john
}

Catch my drift? Pretty simple question. I just want to know the best way of doing it.

Thanks Guys!

W.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

永言不败 2024-10-17 12:09:29

简单的:

function contains_id(obj, id) {
   for(var key in obj)
     if(obj.hasOwnProperty(key) && 
        obj[key]['id'] && obj[key]['id'] == id) 
        return true;
   return false;
}

var ob = ...
if(contains_id(ob, 2)) {
   //do something...
} else {
   //do something else...
}

Simple:

function contains_id(obj, id) {
   for(var key in obj)
     if(obj.hasOwnProperty(key) && 
        obj[key]['id'] && obj[key]['id'] == id) 
        return true;
   return false;
}

var ob = ...
if(contains_id(ob, 2)) {
   //do something...
} else {
   //do something else...
}
护你周全 2024-10-17 12:09:29
var found = false;
for(var nr in ob) {
  if(ob.hasOwnProperty(nr)) {
    if(ob[nr].id === 103) {
       found=true;
       break;
    } 
  } 
}
if(!found) {
  //add ...
}

如果你可以使用 id 作为对象的键,那就更容易了

var found = false;
for(var nr in ob) {
  if(ob.hasOwnProperty(nr)) {
    if(ob[nr].id === 103) {
       found=true;
       break;
    } 
  } 
}
if(!found) {
  //add ...
}

It would've been easier if you could use the id as key for the object

许你一世情深 2024-10-17 12:09:29

使用 id 作为对象的键有问题吗?像这样:

var ob{
  101 : {
        id:101,
        name:'john',
        email:'[email protected]'
      },
  102 : {
        id:102,
        name:'jim',
        email:'[email protected]'
      },
  103 : {
        id:103,
        name:'bob',
        email:'[email protected]'
      },
}

if(ob[101]){
//don't add john
}else{
//add john
}

Is it problem to use id as key of your object? Like that:

var ob{
  101 : {
        id:101,
        name:'john',
        email:'[email protected]'
      },
  102 : {
        id:102,
        name:'jim',
        email:'[email protected]'
      },
  103 : {
        id:103,
        name:'bob',
        email:'[email protected]'
      },
}

if(ob[101]){
//don't add john
}else{
//add john
}
小猫一只 2024-10-17 12:09:29

我很确定你不能在没有循环的情况下做到这一点,因为 IN 涉及的是检查对象的 em 怎么说...属性,例如,如果“id”存在于你的示例中而不是变量中

I am quite certain you cant do that without a loop as far as IN is concerned is to check the object's em how to say it...properties for example if the "id" exists in your example and not the variable

℉絮湮 2024-10-17 12:09:29

除非它们按您要检查的值进行索引,否则我相信您需要迭代对象中的所有元素并检查每个元素。

function recordExistsById(id, ob) {
    for (var key in ob) {
        if (ob[key].hasOwnProperty("id") && ob[key].id == id) {
            return true;
        }
    }
    return false;
}

Unless they are indexed by the value you are checking for, I believe you need to iterate over all elements in the object and check each one.

function recordExistsById(id, ob) {
    for (var key in ob) {
        if (ob[key].hasOwnProperty("id") && ob[key].id == id) {
            return true;
        }
    }
    return false;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文