![](/img/trans.png)
[英]i have flat state of arrays in react and i want to make it nested array and push it to another object ins state
[英]i want to push arrays into array
我有两个参数和两个 arguments,其中一个应该是数字,另一个应该是数组,如果数组中的数字是相似的项目,我应该提取相似的数字然后再次将它们推入数组,并保持顺序不相似的数字,我已经写了这段代码,但它不起作用,我花了两天多的时间试图弄清楚这一点,但还没有结果。
function extractNumber(num, nums) {
if(nums.includes(num)===true){
for (let i = 0; i <nums.length; i++) {
if(nums[i]=== num){
var popped = nums.splice(i,1);
i--;
nums.push(popped);
}
}
}
return nums;
}
extractNumber(7, [1,2,7,1,7,1,7,3,7,1]);
像这样的东西?
你的标题有点误导。
function extractNumber(num, nums) { nums.forEach((i, index) => { //loop each item in nums if (i === num) { //if current item is same as num nums.splice(index, 1) //remove it from its position.. nums.push(i) //..and push it at the end of the array } }) return nums } console.log(extractNumber(7, [1, 2, 7, 1, 7, 1, 7, 3, 7, 1]))
我认为您的代码只有几个问题:
Array#push
popped
一个数组,而是推送num
。i--
我——因为那不是必需的。 我喜欢您的方法,因为如果num
不是数组的元素,您可以避免不必要的循环。 因此,您更正后的代码如下所示:
function extractNumber(num, nums) { if( nums.includes(num) ) { for (let i = 0; i <nums.length; i++) { if(nums[i] === num){ nums.splice(i,1); nums.push(num); } } } return nums; } console.log( extractNumber(7, [1,2,7,1,7,1,7,3,7,1]) );
如果我明白你想要这样的东西
function extractNumber(num, nums) {
const matrixFix = nums.reduce((acc, cv) => {
if (num !== cv) {
return { notSimilar: [...acc.notSimilar, cv], similar: [...acc.similar] }
};
return { notSimilar: [...acc.notSimilar], similar: [...acc.similar, cv]
};
}, { similar: [], notSimilar: [] })
return [...matrixFix.notSimilar, ...matrixFix.similar];
}
extractNumber(7, [1, 2, 7, 1, 7, 1, 7, 3, 7, 1]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.