有没有办法检查阵列上是否存在track_id
?
这是数组结构,我尝试使用indexOf
。
{"playlist":[{track_id : 1}, {track_id : 2}, {track_id : 3}]}
答案 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"));
}
}