[英]How do I change the object names within my javascript array?
我在該站點上找到了一些可能的解決方案,但是沒有一個真正幫助我前進。
我的數組如下所示:
[
{"customerName":"Atelier graphique","addressLine1":"54, rue Royale"},
{"customerName":"Signal Gift Stores","addressLine1":"8489 Strong St."},
etc, etc
我想將customerName更改為value,將addressLine1更改為data。 我嘗試了以下操作,但是我在這里做錯了。
var myArray = [];
$(document).ready(function () {
$("#text-id").on( 'click', function () {
$.ajax({
type: 'post',
url: 'connect.php',
success: function( data ) {
console.log( data );
myArray.push(data);
}
});
});
function DumpCustomers() {
for(i=0;i<myArray.length; i++){
myArray[i].addressLine1= "data";
delete myArray[i].addressLine1;
myArray[i].customerName= "value";
delete myArray[i].customerName;
}
alert(myArray);
}
只需使用Array.map
將您的數組值Array.map
到所需的類型即可:
var myTransformedArray = myOriginalArray.map(function(item){
return {
value : item.customerName,
data : item.addressLine1
};
});
如果需要支持舊的瀏覽器,則可能需要添加polyfill來修補缺少map
功能的情況。 上面的鏈接提供了符合ECMA-262 第 5版的實施:
if (!Array.prototype.map) {
Array.prototype.map = function(callback, thisArg) {
var T, A, k;
if (this == null) {
throw new TypeError(" this is null or not defined");
}
var O = Object(this);
var len = O.length >>> 0;
if (typeof callback !== "function") {
throw new TypeError(callback + " is not a function");
}
if (arguments.length > 1) {
T = thisArg;
}
A = new Array(len);
k = 0;
while (k < len) {
var kValue, mappedValue;
if (k in O) {
kValue = O[k];
mappedValue = callback.call(T, kValue, k, O);
A[k] = mappedValue;
}
k++;
}
return A;
};
}
您並不是很遙遠,但請問自己,這行代碼有什么作用:
myArray[i].addressLine1= "data";
? 正確—將myArray[i].addressLine1
屬性的值設置為"data"
。 那不是你想要的。 :-)您想向myArray[i]
添加一個名為data
的新屬性,並為其提供myArray[i].addressLine1
當前的值。 為此,您可以分配新的屬性名稱:
myArray[i].data = myArray[i].addressLine1;
例如:
function DumpCustomers() {
var i;
for(i=0;i<myArray.length; i++){
myArray[i].data = myArray[i].addressLine1; // Change here
delete myArray[i].addressLine1;
myArray[i].value = myArray[i].customerName; // And here
delete myArray[i].customerName;
}
alert(myArray);
}
...並且在某個時候,您將需要調用DumpCustomers
代碼,或者將更改屬性名稱的部分移到成功處理程序中。
請注意,我在頂部添加了var i
。 沒有它,您的代碼將成為“隱含全球性恐怖”的犧牲品。
就是說,如果這些是數組條目中僅有的兩個屬性,那么我可能會選擇每個支出者的 map
答案 ,或者做類似循環的事情,但是完全替換條目而不是修改它們:
function DumpCustomers() {
var i;
for(i=0;i<myArray.length; i++){
myArray[i] = {
data: myArray[i].addressLine1,
value: myArray[i].customerName
};
}
alert(myArray);
}
嘗試制作一個新的數組:)
像這樣:
var myArray = [
{"customerName":"Atelier graphique","addressLine1":"54, rue Royale"},
{"customerName":"Signal Gift Stores","addressLine1":"8489 Strong St."}
],
newArray = [];
for(var i = 0, len = myArray.length; i < len; i++)
{
newArray.push({'value': myArray[i]['customerName'], 'data': myArray[i]['addressLine1']});
}
myArray = newArray;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.