js中一个数组取其中的几项?
通过v-for遍历数据
比如目前返回了长度为10的数据
arr = [0,1,2,3,4,5,6,7,8,9]
如果取前3项
通过 index > 3就能搞定
现在我想取其中的 1 4 7
怎么处理呢?
看了大家的回答 直接是取 1 4 7
那如果数组长度为20或者更长不是很不灵活
我的想法是如何实现类似3n-2的等差数列算法来取值
回答:
可能是我的问题描述不够清晰,导致各位答案有偏差
目前找到了方法解决:
通过 index%3 === 1
这样的条件判断即可处理
回答:
<div v-for="(item, index) in arr" :key="index"> <template v-if="index === 1 || index === 4 || index === 7">
{{ item }}
</template>
</div>
回答:
很简单啊,通过 filter 搭配 includes 来实现。
var arr = [0,1,2,3,4,5,6,7,8,9]var result = arr.filter((val, ind) => [1,4,7].includes(ind))
console.log(result)
// log => Array(3) [ 1, 4, 7 ]
Edit
哦,原来在 v-for
中使用啊,一样的。
<div v-for="(val, ind) in arr.filter((val, ind) => [1,4,7].includes(ind))" :key="val"> {{ ind }} - {{ val }}
</div>
当然用1楼的使用 v-if
来判断也可以,但是并不提倡 v-for
嵌套 v-if
。
其实可以写一个函数或者使用 computed
来处理:
<template> <div v-for="(val, ind) in filterArr" :key="val">
{{ ind }} - {{ val }}
</div>
<!-- 或者 -->
<div v-for="(val, ind) in filterArrFn(arr, [1,4,7])" :key="val">
{{ ind }} - {{ val }}
</div>
</template>
<script>
export default {
data() {
return {
arr: [0,1,2,3,4,5,6,7,8,9]
}
},
computed: {
filterArr() {
return this.arr.filter((val, ind) => [1,4,7].includes(ind))
}
},
methods: {
filterArrFn(list, rules) {
// 也可以和 computed 一样直接使用 this.arr 来过滤,就看你具体需求了。
return list.filter((val, ind) => rules.includes(ind))
}
}
}
</script>
回答:
这类问题一般filter解决
回答:
建议用computed来获取想要的数据:
<template> <div v-for="item in data" :key="item">
{{ item }}
</div>
</template>
<script setup>
import { ref, computed } from "vue";
const arr = ref([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
const data = computed(() => {
return arr.value.reduce((acc, it) => {
const i = acc.length + 1;
if (3 * i - 2 === it) acc.push(it);
return acc;
}, []);
});
</script>
以上是 js中一个数组取其中的几项? 的全部内容, 来源链接: utcz.com/p/934603.html