gpt4 book ai didi

javascript - 比较多个 JS 数组的值

转载 作者:行者123 更新时间:2023-12-02 15:01:59 27 4
gpt4 key购买 nike

事实:

  • 我有几个数组(从 2 个到数十个不等),全部由 CSS 类组成。
  • 每个数组中的每个类都使用以下之一进行命名空间:'alignment__''font__''leading__''size__',或'tracking__'
  • 数组中的值通常不会采用相同的顺序。
  • 数组并不总是包含每个命名空间类的值。

我需要什么:

  • 如果每个数组中每个命名空间的值都相同,我需要返回className不带命名空间。
  • 如果任何数组中任何命名空间的值不同,我需要返回false

示例:

这是我将使用的数组集合的一个小示例:

p1 = ["alignment__left", "size__18px", "leading__170", "tracking__0", "font__Operator--1408"];
p2 = ["size__18px", "tracking__0", "font__Operator--1408", "alignment__left"];
p3 = ["alignment__left", "size__18px", "leading__170", "tracking__0", "font__Operator--1408"];
p4 = ["alignment__left", "size__18px"];

这个数组集合应该返回如下内容:

return {
alignment: 'left',
font: false,
leading: false,
size: '18px',
tracking: false
}

建议?我从每个 Angular 处理这个问题都显得缓慢且低效。我在这个项目中使用 lodash,以防简化事情。

最佳答案

这是我整理的一些东西。

'use strict';
const originalArrays = [
["alignment__left", "size__18px", "leading__170", "tracking__0", "font__Operator--1408"],
["size__18px", "tracking__0", "font__Operator--1408", "alignment__left"],
["alignment__left", "size__18px", "leading__170", "tracking__0", "font__Operator--1408"],
["alignment__left", "size__18px"]
]
const countInArray = (array, what) => {
lt count = 0;
for(let i = 0; i < array.length; i++) {
if(array[i] === what) {
count++;
}
}
return count;
};
const theFunction = (originalArrays) => {
const flattenedArray = originalArrays.reduce((a, b) => a.concat(b));
let interimResults = [];
let results = {};

for(let item of flattenedArray) {
if(countInArray(flattenedArray, item) === originalArrays.length) {
if(interimResults.indexOf(item) === -1) {
interimResults.push(item)
}
} else {
results[item.split('__')[0]] = false;
}
}

for(let result of interimResults) {
let parts = result.split('__');
results[parts[0]] = parts[1];
}
return results;
};

关于javascript - 比较多个 JS 数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35384350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com