簡體   English   中英

如何比較數組的javascript對象與其他對象

[英]How to compare javascript objects of an array with other object

波紋是折線對象

var firstpolyline = new L.Polyline(myPointList, {
    color: 'red',
    weight: 5,
    smoothFactor: 1
    });

我已將此折線對象添加到數組中

var allpolylines = [];
allpolylines.push(firstpolyline);

像這樣我在這個數組中添加了5個折線對象。

現在我正在創建另一個折線對象。

var mytpolyline = new L.Polyline(myPointList, {
    color: 'red',
    weight: 5,
    smoothFactor: 1
    });

現在我想比較mytpolyline對象與數組的對象並找到該數組對象的索引。

我試過的是

var index = allpolylines.indexOf(mytpolyline);

但這不是給出數組對象的索引。

您無法直接比較對象,它們永遠不會相等,除非您明確地引用它們

var a = {};
var b = {};
var c = a;

b == a // false
c == a // true

如果要檢查數組中的對象是否相等,很遺憾,您必須單獨比較每個屬性。

for (prop in a){
    if (a.hasOwnProperty){
        // compare a.prop to b.prop 
    }
}

使用普通(非對象)屬性和更新的瀏覽器,您可以這樣做:

function comp(a,b){
    return Object.keys(a).every(function(prop){
        if (!b[prop]){ return false; }
        else if (a[prop] !== b[prop]){ return false; }
        return true;
    });
}

一個例子

參考文獻:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/every

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM