循环遍历JavaScript数组并排除数组本身
Loop through JavaScript array and exclude the array itself
我试图通过一个JS对象从JSON代码解析[this.props.dataPro.links]
:
"links" :
[ "/static/media/0.jpg",
"/static/media/1.jpg",
"/static/media/1.jpg" ],
我正在插入这些链接数组键到一个图像对象:
_getStaticImages() {
let images = [this.props.dataPro.links]
for (var key in images) {
if (images.hasOwnProperty(key)) {
var obj = images[key];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
images.push({
original: obj[prop],
thumbnail:obj[prop]
});
}
}
}
}
return images;
}
结果,我得到一个空的返回对象在我的返回对象的开始,当我做console.log上的images
响应似乎我也返回数组对象本身:
[Array[3], Object, Object, Object]
0:Array[4]
1:Object
2:Object
3:Object
我如何排序循环通过我的数组和排除数组本身?
您正在将初始数组添加到输出let images = [this.props.dataPro.links]
中。相反,您可以使用Array。最好映射到这里:
var linkObj = {
"links": [
"/static/media/0.jpg",
"/static/media/1.jpg",
"/static/media/1.jpg"
]
};
function getStaticImages() {
let output = linkObj.links.map(imgUrl => {
return {
original: imgUrl,
thumbnail: imgUrl
}
});
return output;
}
console.log(getStaticImages());
我会使用Array.prototype.map()
,并做这样的事情:
getStaticImages(imageArray) {
return imageArray.map(function(img) {
return {
original: img.whateverPropMapsToOriginal,
thumbnail: img.whateverPropMapsToThumbnail,
}
});
}
var images = [];
for(var i = 0; i < this.props.dataPro.links.length;i++)
{
images.push({
original: this.props.dataPro.links[i],
thumbnail: this.props.dataPro.links[i]
});
}
至于为什么数组是第一个元素,这一行:
let images = [this.props.dataPro.links]
,其中创建数组images
,其中包含要迭代的数组的第一个元素。
要创建一个空数组,不要在里面放任何值:
let images = []; // nothing inside
至于迭代自身。考虑到this.props.dataPro.links
已经是一个数组,要遍历它,你应该这样做:
var myArray = this.props.dataPro.links; // so we don’t need to type it later
var images = []; // we’re creating *empty* table
for (var i = 0; i < myArray.length; ++i) {
console.log('Item', i, myArray[i]);
images.push({
original: item,
thumbnail: item
});
}
那是做这件事的老方法。如果你支持IE9以上版本,那么你可以使用function Array.prototype.forEach:
var images = [];
this.props.dataPro.links.foreach(function (item, index) {
console.log('Item', index, item);
images.push({
original: item,
thumbnail: item
});
}
不要使用第二种解决方案,如果你想有选择地中断遍历数组
为什么不改变你的for
循环?
for (let i = 1; i > obj.length; i++) {
if (obj[i]) {
images.push({
original: obj[prop],
thumbnail: obj[prop]
})
}
}
这将跳过数组的0th
元素(您想要跳过的对象),但仍然会推送您想要的图像。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 下划线的 _.,但不排除以下数组中的子字符串
- 如何将元素添加到动态数组并排除现有元素
- 从数组中排除值后,获取下一个最高日期值
- 从数组中排除给定对象
- 从XML文件中排除一组单词,并将它们存储在Javascript中的数组中
- 查找一个项目是否在数组中,并使用angularjs将其从选择选项中排除
- 从数组返回对象时排除属性
- angularJs会从数组中排除已经选定的项
- MongoDB查询:排除子数组中的对象
- Javascript将数组重新映射为对象,0(零)值被排除在外
- jQuery:从数组中排除具有id的元素
- 将数组复制到变量,同时排除项-性能