如何检查数组中是否存在元素?

时间:2016-06-11 13:03:32

标签: javascript

有没有办法检查阵列上是否存在track_id? 这是数组结构,我尝试使用indexOf

{"playlist":[{track_id : 1}, {track_id : 2}, {track_id : 3}]}

4 个答案:

答案 0 :(得分:1)

使用 Array#some 方法



var obj = {
  "playlist": [{
    track_id: 1
  }, {
    track_id: 2
  }, {
    track_id: 3
  }]
};

var search_id = 2;

var found = obj.playlist.some(function(v) {
  return v.track_id == search_id;
});

console.log(found);




答案 1 :(得分:0)

您可以使用带有Array#some回调的函数。



function check(id) {
    return data.playlist.some(function (a) {
        return a.track_id === id;
    });   
}

var data = {"playlist":[{track_id : 1}, {track_id : 2}, {track_id : 3}]};

console.log(check(5));
console.log(check(2));




答案 2 :(得分:0)

您需要知道indexOf不会按对象的值进行检查,而是通过引用来检查。

示例:

如果:

var obj = { a: "a" };
var array = [ { a: "a" }, { b : "b"}];

array.indexOf(obj); //False
array.indexOf({ a : "a"}); //False

但是如果:

array = [obj, { b : "b"}]
array.indexOf(obj); //True

知道您可以将indexOf与对象一起使用 否则,.some()似乎是一个不错的选择。

答案 3 :(得分:0)

您可以使用hasOwnProperty()

用于检查数组对象中是否存在密钥

像这样:

var object = {"playlist":[{track_id : 1}, {track_id : 2}, {track_id : 3},  {d : 3}]};
for (var key in object.playlist) {

    if(object.playlist[key].hasOwnProperty("track_id"))
    {
        console.log(object.playlist[key].hasOwnProperty("track_id"));
    }
}



var object = {"playlist":[{track_id : 1}, {track_id : 2}, {track_id : 3},  {d : 3}]};

for (var key in object.playlist) {
    
    if(object.playlist[key].hasOwnProperty("track_id"))
    {
        console.log(object.playlist[key].hasOwnProperty("track_id"));
    }
}