var arr = [];
console.log(arr);
console.log("Length: " + arr.length);
arr[1] = [{},{}];
console.log(arr);
console.log("Length: " + arr.length);
arr[3] = [{},{}];
console.log(arr);
console.log("Length: " + arr.length);

因此,当我创建一个类似于上面的数组时,它会在其间提供空/未定义的元素。
我想在保留索引值的同时删除那些空/未定义的元素。
vm.eArray = vm.eArray.filter(function (arr) {
return arr.length;
});
我使用上面的代码删除了未定义的元素,但它混淆了我的索引/键值。
或者有没有办法在第一时间避免它?
答案 0 :(得分:2)
struct

您可以使用var arr = new Map();
console.log(arr);
console.log("Length: " + arr.size);
arr.set(1,[{},{}]);
console.log(arr);
console.log("Length: " + arr.size);
arr.set(3,[{},{}]);
console.log(arr);
console.log("Length: " + arr.size);
,并使用Map()
获取尺寸。
答案 1 :(得分:2)
Array是索引数据结构。因此,在使用它们时,最好保留该结构,否则无法使用数组。对于您的用例,您可以使用Map()或Json元素数组。
var myMap = new Map();
//to add the element with index 1
myMap.set(1, [{},{}]);
//to add the element with index 3
myMap.set(3, [{},{}]);
// you can iterate over them if you want like an array
console.log("with a map")
myMap.forEach((key, value) => console.log(key, value));
// using a Json object
var myObject = [];
myObject.push({id: 1, value:[{},{}]})
myObject.push({id: 3, value:[{},{}]})
//iterate over it, because it is still an array, but of Json element
console.log("with array of json")
for (element of myObject){
console.log(element.id, element.value)
}
答案 2 :(得分:1)
我只想使用一个对象来存储你的值。
var arr = {};
console.log(arr);
console.log("Length: " + Object.keys(arr).length);
arr[1] = [{},{}];
console.log(arr);
console.log("Length: " + Object.keys(arr).length);
arr[3] = [{},{}];
console.log(arr);
console.log("Length: " + Object.keys(arr).length);
for (something in arr){
console.log(arr[something]);
}
答案 3 :(得分:0)
您在索引1处分配值arr[1] = arr[1] = [{},{}];
。因此您正在跳过索引0.默认情况下,javascript会将undefined
放在那里。