我正在尝试将值推送到关联数组,但是当我推送它时会定义。
因此,当我将多个记录推送到我的arr
变量时,如下所示:
var obj = { name: 'abc',value : 0};
var obj = { name: 'pqr',value : 1};
var obj = { name: 'lmn',value : 2};
并且假设我想获得abc的值,那么我可以像下面这样得到它:
var name = "abc";
arr[name];
演示:
var obj = { name: 'abc',value : 0};
var arr = [];
arr[obj.name].push({
key : obj.value
});
console.log(arr);

答案 0 :(得分:1)
不要推送到数组,放入对象
var obj= {
abc:0,
pqr:1
};
alert(obj.abc);
obj["lnm"]=2;
alert(obj.lnm);
答案 1 :(得分:1)
试试这个。将arr
更改为object
而不是array
。因为数组不是键值对。而arr[obj.name]=[]
声明arr[obj.name]
array.Then只将Object
推到array
var obj = { name: 'abc',value : 0};
var arr = {};
arr[obj.name]=[];
arr[obj.name].push({
key : obj.value
});
console.log(arr);

使用Array
进行多个对象
var obj1 = { name: 'abc',value : 0};
var obj2 = { name: 'pqr',value : 1};
var obj3 = { name: 'lmn',value : 2};
var arr=[];
function add(a){
var k ={}
k[a.name]=a.value;
arr.push(k)
}
add(obj1)
add(obj2)
add(obj3)
console.log(arr)

答案 2 :(得分:1)
你需要一个带数组的对象。
var records = {}; //holds the keys with their array of values
function insertRecord(obj) {
records[obj.name] = records[obj.name] || []; //if we have not seen the key, set it up
records[obj.name].push(obj.value); //add the new value
}
insertRecord({
name: 'abc',
value: 0
});
insertRecord({
name: 'pqr',
value: 1
});
insertRecord({
name: 'lmn',
value: 2
});
insertRecord({
name: 'abc',
value: 5
});
insertRecord({
name: 'abc',
value: 10
});
console.log(records["abc"])

答案 3 :(得分:1)
你在这里要做的是(如果我是对的!),要将对象的值添加到数组索引作为object.name 的数组中。
为此目的有一个函数array_push()
。
比如,array_push($array[obj.name], obj.value);
或者您可以直接使用$data[$key] = $value;
。
比如,arr[obj.name] = obj.value;
希望它有所帮助。