在 JavaScript 中将数字转换为二进制格式

将数字转换为二进制是一个相当复杂的过程。如果我们坐下来手动转换数字,结果很容易出错。我们如何将数字更改为二进制格式?JavaScript 没有很多内置函数可以这样做。我们将介绍如何在 JavaScript 中将数字转换为二进制。

在 JavaScript 中创建一个将数字转换为二进制的函数

在进入代码之前,我们需要了解从十进制数(基数为 10)到二进制数(基数为 2)的转换过程。为简单起见,我们将在本文中介绍正整数的转换。因此,负整数和浮点数的变化超出了本文的范围。

了解转换过程

给定一个整数(或 JavaScript 数字),我们不断将数字除以 2 并捕获其余数,直到数字小于 2。例如,如果我们有一个数字 25,继续将 25 除以 2 直到我们得到商小于 2。

除数
25 / 2 12 1 0
12 / 2 6 0 1
6 / 2 3 0 2
3 / 2 1 1 3
1 / 2 0 1 4

我们从高到低读取数字。因此,数字 25 的二进制值是 1101。

我们使用以下一组计算来确认二进制值是否代表正确的十进制数。二进制数中表示的每个位都乘以 2,为位位置值(从 0 开始)提供动力。

= 2^4*(1) + 2^3*(1) + 2^2*(0) + 2^1*(0) + 2^0*(1)
= 16 + 8 + 0 + 0 + 1
= 25

将数字转换为二进制格式的 JavaScript 代码

我们在上面讨论的方法上构建以下代码。函数 convertToBinary1 控制作为参数传递的十进制数的二进制等价物。请注意,我们向后读取结果。因此,在考虑所有上述因素的情况下创建了代码。

使用迭代

function convertToBinary1 (number) {
    let num = number;
    let binary = (num % 2).toString();
    for (; num > 1; ) {
        num = parseInt(num / 2);
        binary =  (num % 2) + (binary);
    }
    console.log(binary);
}
window.onload = function () {
    console.log(convertToBinary1(25));
    console.log(convertToBinary1(8));
}

输出:

11001
1000

脚步

  • 复制传递给函数的参数并将其存储在临时变量 num 中。
  • 创建一个变量来存储二进制位。它本质上是字符串类型,以便于处理。
  • 开始迭代以生成二进制位并让它继续直到数字不再能被 2 整除。

    在每次迭代中,我们将数字除以 2 以获得商。我们计算商的。此步骤将二进制位生成为数字的模数,其中 2 生成二进制位 01

  • 将由 modulous 值生成的二进制位附加到保存每次迭代中生成的二进制位的二进制变量中。
  • 一旦数字不再能被 2 整除(检查条件(num / 2)> 1),迭代停止。
  • 在最后一步,我们将结果记录到控制台。因此,我们得到作为参数传递给该函数的十进制数的二进制等效项。

使用递归

我们可以使用递归方法将十进制位转换为二进制位。这种方法需要更少的代码行,但需要更多的思考。当数字不再能被 2 整除时,递归停止,并不断调用自己,直到达到突破条件。递归很优雅,但与简单迭代方法相比,函数调用堆栈消耗更多内存。

function convertToBinary (number, bin) {
    if (number > 0) {
        return convertToBinary( parseInt(number / 2) ) + (number % 2)
    };
    return '';
}
window.onload = function () {
    console.log(convertToBinary(25));
    console.log(convertToBinary(8));
}

输出:

11001
1000

使用 toString(2) 函数将数字转换为二进制

toString() 函数对于将数字转换为字符串非常熟悉。但是,我们也可以使用它来将数字转换为其二进制格式。通常,它与 Number 对象一起使用以将数字转换为二进制格式。javascript 的 toString(2) 函数在用于数字对象时,返回数值的二进制等效项,如下面的示例所示。该方法将基数值作为输入。因此,我们可以使用它来将给定的数字转换为其他基本系统(如 16 的基数(十六进制)和 8 的基数(八进制))。

(8).toString(2)
(25).toString(2)
(235).toString(2)

输出:

"1000"
"11001"
"11101011"

请注意,toString(2) 方法的返回类型仍然是字符串。因此,它将数字转换为字符串格式的二进制位。

在 JavaScript 中将数组转换为 JSON

本教程将讨论使用 JavaScript 中的 JSON.stringify() 函数将数组转换为 JSON。

使用 JavaScript 中的 JSON.stringify() 函数将数组转换为 JSON

我们使用 JSON 从服务器发送和接收数据,数据应该是字符串格式。我们可以使用 JSON.stringify() 函数将 JavaScript 数组转换为 JSON。例如,让我们创建一个字符串数组并使用 JSON.stringify() 函数将其转换为 JSON。请参考下面的代码。

const MyArray = ["Banana", "Apple"];
const JsonArray = JSON.stringify(MyArray);
console.log(JsonArray)

输出:

["Banana","Apple"]

将数组转换为 JSON 后,你可以毫无问题地将其发送到服务器。你还可以使用 JavaScript 中的 JSON.stringify() 函数将包含多个属性的对象转换为 JSON。例如,让我们创建一个具有各种属性的对象,并使用 JavaScript 中的 JSON.stringify() 函数将其转换为 JSON。请参考下面的代码。

const MyObject = {name: "Sara", age: 22};
const Json = JSON.stringify(MyObject);
console.log(Json)

输出:

{"name":"Sara","age":22}

如果要将包含日期函数的对象发送到服务器,可以使用 JSON.stringify() 函数,但它也会将其转换为字符串。因此,你必须在接收器处将该字符串转换为日期对象。例如,让我们将一个日期对象传递给 JSON.stringify() 函数并查看结果。请参考下面的代码。

const MyObject = {name: "Sara", date: new Date()};
const Json = JSON.stringify(MyObject);
console.log(Json)

输出:

{"name":"Sara","date":"2021-07-17T02:50:10.568Z"}

正如你在输出中看到的,日期也已转换为字符串。如果要转换包含函数的对象或数组,JSON.stringify() 函数将删除该函数。所以在将对象或数组转换为 JSON 之前,必须先将函数转换为字符串,在接收方,可以将其恢复为函数。例如,让我们使用 JSON.stingify() 函数将包含函数的对象转换为 JSON。请参考下面的代码。

const MyObject = {name: "Sara", age: function result() {return 22;}};
MyObject.age = MyObject.age.toString();
const Json = JSON.stringify(MyObject);
console.log(Json)

输出:

{"name":"Sara","age":"function result() {return 22;}"}

在上面的代码中,我们使用 toString() 函数将函数转换为字符串,然后使用 JSON.stringify() 函数将对象转换为 JSON。我们可以使用 eval() 函数来恢复函数。

在 JavaScript 中将数组转换为不带逗号的字符串

在 JavaScript 中,我们有 toString()join() 方法可以直接将数组转换为字符串。此外,我们可以通过从数组中获取一个值然后进行类型转换并将其分配给另一个字符串来打印整个数组,从而将其转换为字符串。

在这里,我们的动机是消除数组中可用的任何分隔符。通常,数组中使用的分隔符是逗号 (,)

toString() 方法确实将整个数组转换为字符串,但不适用于逗号。因此,我们得到一个带逗号的字符串。

但是 join() 方法可以忽略逗号,并且可以附加分隔符或中间符号。下面定义的示例将清楚地说明其工作原理。

在 JavaScript 中使用带空值 ("")join() 方法将数组转换为不带逗号的字符串

在没有任何参数的情况下启动时,join() 方法会打印字符串中的分隔符。但是,通常的做法是设置一个空白值作为参数。

这种约定通常被认为是将数组转换为字符串的默认方式。让我们检查一下代码。

代码片段:

var arr = [1,2,3,4];
console.log(arr.join(""));
console.log(typeof(arr.join("")));

输出:

在 JavaScript 中将数组转换为不带逗号的字符串

使用带空格的 join() 方法 (" ") 来分隔字符串的字符

通常的方式定义没有任何参数的 join() 方法将在输出中保留逗号。但如果我们希望排除逗号,我们使用空白值作为参数。

这使我们的输出看起来很拥挤,而且缺乏优雅。因此,选择空格而不是空白值可能是一个更可取的事实。

让我们跳到代码行。

代码片段:

var arr = [1,2,3,4];
console.log(arr.join(" "));
console.log(typeof(arr.join(" ")));
console.log(arr.join());

输出:

在 JavaScript 中将数组转换为不带逗号的字符串

在 JavaScript 中将数组转换为字符串

数组是你在日常编程生活中可能使用的最常见和最灵活的数据结构。由于你可以使用 JavaScript 编程语言提供的大量数组方法,因此你可以轻松地操作数组并执行你想要执行的任何操作。

同样,在预定义方法的帮助下并遵循一些其他方式,也可以轻松地将数组转换为字符串。在本文中,我们将看到将整个数组数据结构(即该数组中存在的所有元素)转换为单个字符串的不同方法。

在 JavaScript 中使用 toString() 方法将数组转换为字符串

将数组转换为字符串的最简单方法是使用 JavaScript 中名为 toString() 的预定义方法。此方法不仅适用于数组,还适用于各种其他数据类型。几乎任何东西都可以使用 toString() 转换为字符串。

你可以将它添加到数组的末尾以使用此方法,如下所示。它将获取该数组中的所有元素并将它们连接为单个字符串。

var arr = ['Google', 'is', 'no', '1', 'search engine'].toString();
console.log(arr);

输出:

"Google,is,no,1,search engine"

在这里,如果你看到输出,它是一个字符串,但以逗号分隔。现在,如果你想从上面的字符串中删除逗号,你可以使用 replace() 方法,如下所示。replace() 方法有两个参数。第一个参数是需要替换的字符本身(在这种情况下,逗号,用/, 表示),第二个参数决定用什么来替换字符(在这种情况下是空格)。/ 是转义字符。

arr.replace(/,/g," ")

输出:

"Google is no 1 search engine"

在这种情况下,我们希望从字符串中删除所有逗号,用 /g 表示。

在 JavaScript 中使用 .join() 方法连接数组的元素

另一种将数组转换为字符串的方法是使用 join() 方法。此方法将从数组中取出每个元素并一起形成一个字符串。在这里,如果直接将此方法用于类似于 toString() 的数组,它也会生成一个以逗号分隔的字符串。

但是在这里,你不需要使用任何其他方法,例如 replace(),因为你可以直接传递任何其他分隔符作为参数来分隔字符串中的元素。

var arr_1 = ['Google', 'is', 'no', '1', 'search engine'].join();
var arr_2 = ['Google', 'is', 'no', '1', 'search engine'].join("-");
var arr_3 = ['Google', 'is', 'no', '1', 'search engine'].join("##space##");
console.log(arr_1);
console.log(arr_2);
console.log(arr_3);

输出:

"Google,is,no,1,search engine"
"Google-is-no-1-search engine"
"Google##space##is##space##no##space##1##space##search engine"

在 JavaScript 中使用 JSON.stringify() 将数组转换为字符串

JSON.stringify() 方法允许你将任何 JavaScript 对象或值转换为字符串。这更干净,因为它引用数组内的字符串并正确处理嵌套数组。此方法最多可以采用以下三个参数。

JSON.stringify(value, replacer, space)

value 参数采用任何需要转换为字符串的值。该参数是必须通过的。replacer 是一个函数,你可以通过它来替换字符串中的某些元素。如果你想在输出字符串中添加空格以提高可读性,你可以使用 space 参数。replacerspace 这两个参数都是可选的。

var arr = JSON.stringify(['Google', 'is', 'no', '1', 'search engine']);
console.log(arr);

输出:

"[\"Google\",\"is\",\"no\",\"1\",\"search engine\"]"

在上面的例子中,我们肯定要使用替换函数,因为我们上面得到的输出是不可读的。JSON.stringify() 方法直接获取数组的各个元素并将它们转换为字符串,包括其结构。

在 JavaScript 中使用类型强制将数组转换为字符串

将数组转换为字符串的最后一种方法是使用类型强制。类型强制是将值从一种类型转换为另一种类型的过程。JavaScript 中有两种类型的强制转换,隐式强制和显式强制。

隐式强制是当你将各种运算符(+、-、’ ‘、/ 等)应用于不同类型的值时,显式强制是当你使用诸如 String()Number() 之类的函数时。两种类型强制的示例如下所示。

var str_1 = ['This', 'is', 11, 'clock'] + '';
var str_2 = String(['This', 'is', 11, 'clock']);
console.log(str_1);
console.log(str_2);

输出:

This,is,11,clock
This,is,11,clock

str_1 是隐式强制转换的一个例子,我们只是在两种不同类型的值(一个是数组,另一个是字符串)之间使用运算符。此操作的结果输出是一个字符串。str_2 是显式强制转换的一个例子,我们刚刚在 String() 函数中传递了整个数组,以将数组转换为字符串。

在 JavaScript 中将数组转换为集合

本教程展示了将数组转换为 set 的过程,并了解如何使用 JavaScript 将对象数组转换为多个集合。

我们可以通过不同的路径将数组转换为 JavaScript 中的 set 转换。下面列出了其中一些,我们将在本教程的后面部分进行探讨。

  • set 构造函数。
  • map() 函数。
  • reduce() 函数。
  • 同时使用 set 构造函数和 map() 函数。

在 JavaScript 中使用 set 构造函数将数组转换为 Set

JavaScript 代码:

var array = [5, 4, 6];
var set = new Set(array);
console.log(set.size === array.length);
console.log(set.has(6));

输出:

true
true

我们将 array 传递给 set 构造函数以将数组转换为 set。然后,我们使用 set.size === array.length 比较数组的大小/长度和 set

此外,我们使用 has() 方法来检查 set 是否具有数组中的元素。

在 JavaScript 中使用 map() 函数将数组转换为 Set

JavaScript 代码:

var array = [5, 5, 4, 6];
var set = new Set();
array.map(arrElement => set.add(arrElement));

set.forEach(item => {
  console.log(item);
});

输出:

5
4
6

map() 方法通过对每个数组的元素执行一次方法而不更新实际数组来构造一个新数组,而 add() 方法获取数组元素并将其添加到 set 中。

最后,我们使用 forEach 循环遍历 set 并在控制台上打印元素。

如上面的输出所示,它在 set 中只有一个数字五(5)。set 仅包含唯一值,因此在转换为 set 时务必小心,当你有冗余数据(重复数据/值)时切勿转换为 set

在 JavaScript 中使用 reduce() 函数将数组转换为 Set

JavaScript 代码:

var array = [5, 5, 4, 6];
var set = new Set();
array.reduce((_, item) => set.add(item), null);

set.forEach(item => {
  console.log(item);
});

输出:

5
4
6

我们使用 reduce() 方法将数组转换为 setreduce() 函数为数组的每个元素调用 reducer 方法,并将累积的答案作为单个值返回。

在 JavaScript 中使用 set 构造函数和 map() 函数将对象数组转换为多个 Sets

JavaScript 代码:

let array = [
    {name: "Mehvish", age: 36},
    {name: "Thomas", age: 23},
    {name: "Christopher", age: 45}
];
let namesSet = new Set(array.map(item => item.name));
let ageSet = new Set(array.map(item => item.age));

namesSet.forEach(item => {
  console.log(item);
});

ageSet.forEach(item => {
  console.log(item);
});

输出:

"Mehvish"
"Thomas"
"Christopher"
36
23
45

最后一个例子表明我们可以将一个对象数组转换为多个 sets。在我们的例子中,我们制作了两个 set,一个用于名称,另一个用于年龄。