設置對象鍵我有進入JS函數名的實時輸入,我想創建一個對象,例如:JavaScript的 - 按名稱
var renderObj= {
{"name": "test1", "size": 3938},
{"name": "test2", "size": 3812},
{"name": "test3", "size": 6714}
};
所以renderObj
是空的開始。每次名稱進入時,我都需要檢查它是否存在於對象中。如果是,請更新大小。
任何人都可以建議嗎?
設置對象鍵我有進入JS函數名的實時輸入,我想創建一個對象,例如:JavaScript的 - 按名稱
var renderObj= {
{"name": "test1", "size": 3938},
{"name": "test2", "size": 3812},
{"name": "test3", "size": 6714}
};
所以renderObj
是空的開始。每次名稱進入時,我都需要檢查它是否存在於對象中。如果是,請更新大小。
任何人都可以建議嗎?
您不能在對象中有未命名的項目。使用數組來代替:
var renderObj = [
{"name": "test1", "size": 3938},
{"name": "test2", "size": 3812},
{"name": "test3", "size": 6714}
];
循環遍歷數組來檢查名稱存在:
var index = -1;
for (var i = 0; i < renderObj.Length; i++) {
if (renderObj[i].name == name) {
index = i;
break;
}
}
現在檢查的結果。我假設你想添加一個對象,如果這個名字還不存在的話。你沒有說你怎麼想的大小來更新,所以我假設你想在新值添加到前面:
if (index == -1) {
renderObj.push({ name: name, size: size });
} else {
renderObj[index].size += size;
}
這是理想的。是的,這個例子中的數組更適合我需要的東西。 感謝您的協助! 本。 – Ben
這就是結構你可能想:
var renderObj= {
"test1" : 3938,
"test2" : 3812,
"test3" : 6714
};
當然你可以有一個完整的對象,如:
var renderObj= {
"test1" : {"size": 3938},
"test2" : {"size": 3812},
"test3" : {"size": 6714}
};
關鍵的一點是,你的對象的屬性是你的「鑰匙」,讓您可以輕鬆地檢查一個名字是你renderObj
:
function addItem(obj, name) {
var value = obj[name]
if (typeof value === "number")
obj[name] = value + 1
else
obj[name] = 1
}
在更復雜的對象的情況下:
function addItem(obj, name) {
var value = obj[name]
if (value)
value.size++
else
obj[name] = {"size": 1}
}
然後:
addItem(renderObj, "test1")
addItem(renderObj, "test4")
// etc..
我會保持地圖的名字並排與對象,並檢查功能即地圖:
var renderObj = [
{ name: "test1", size: 3938},
{ name: "test2", size: 3812},
{ name: "test3", size: 6714}
]
, nameMap = {}
;
function notAlreadyInrenderObj(newObj){
//IE7 and above, use typeof ... === "undefined" if you need lower browsers
return (undefined === nameMap[newObj.name]);
}
然後添加新對象:
if(notAlreadyInrenderObj(ojb)){
nameMap[newObj.name] = renderObj.length; //in case you need to find it quickly later
renderObj.push(ojb);
}
的[javasccript找到對象的數組元素]
可能重複(http://stackoverflow.com/questions/8234211/javasccript-find-element-in-array-of-object) –
你的例子是不正確的JavaScript。我假設你有一組對象... –